Bahar ilə API-lərin necə qurulacağı barədə tam təlimat

Hər hansı bir iş tələbinə uyğunlaşan API-ləri sürətlə qurun

Giriş

Springboot layihəsi mövcud olsa da, inkişafınızı asanlaşdırmaq və bir xüsusiyyət üçün "həyata keçmə vaxtı" yaxşılaşdırmaq məqsədi daşıyırsa da, bəzən izləmək çətindir və ya birlikdə qoyulması çətin olan bir Bahar tətbiqi daxilində hərəkət edən çox sayda hissə var.

Bu yazıda həmin hissələri həll edəcəyəm, istifadə etmək üçün illər boyu seçdiyim texnologiyaların altını vurğulayacağam və müəssisə tətbiqini yaradacağam.

Bahar layihələrinin rolu

İnternetin etibarsız təbiətinə görə Bahar Tətbiqləri istifadəçi interfeysi ilə verilənlər bazası arasında orta qat rolunu oynayır. Təhlükəsizliyi təmin etmək, məlumatların doğrulanmasını həyata keçirmək, məlumatları dəyişdirmək, nəhayət başqa bir sistemə (verilənlər bazası, digər tətbiqetmə, mesajlaşma sistemi, poçt serveri) göndərmək üçün mövcuddur.

Bahar tətbiqlərinin orta qat təbiətini nəzərə alaraq, etibarlı bir əlaqə kanalını dəstəkləmək üçün bir şəbəkəyə ehtiyacımız var.

Bir yaz ərizəsinə baxış
  1. İstifadəçilər HTTP sorğularını göndərirlər. Bu tələbləri təmin etmək üçün HTTPS-dən istifadə etməliyik.
  2. Yaz tətbiqi bu tələbləri emal edir, məlumatların etibarlı olub olmadığını yoxlayır və istifadəçinin bu əməliyyatı yerinə yetirmək üçün səlahiyyətli olub olmadığını yoxlayır və nəticədə məlumatları verilənlər bazasına saxlayır.
  3. İstifadəçilər, sorğularının uğurla işlənib-edilmədiklərinə görə HTTP cavabı alırlar

Bahar layihəsi memarlığı

Aşağıdakı diaqram bir yaz tətbiqinin daxili şəkildə necə qurulduğunu daha ətraflı göstərir.

Bahar tətbiqetmələrinin daxili quruluşu
  1. Dediyi kimi, tətbiq istifadəçiləri verilənlər bazasından ayıran orta təbəqədir. Bir qayda olaraq bahar tətbiqi yaratmağı düşündüyümüzdə əvvəlcə verilənlər bazasının quruluşunu ətraflı şəkildə müəyyənləşdirməyə çalışmalıyıq.
  2. Buna əsaslanaraq DDL skriptlərimizi icra etmək üçün verilənlər bazası versiyasını istifadə edirik. Əlbətdə ki, təmiz SQL skriptlər yaza bilərik, ancaq istehsalda tətbiq olunan bir şey ilə bir şey dəyişdirmək istəyəndə bu, bizi yavaşlatır, Liquibase və Flyway kimi verilənlər bazası versiya sistemlərindən istifadə etmək yaxşı bir təcrübədir.
  3. Konfiqurasiya, bütün komponentləri bir yerə qoyan və tətbiqin işini təmin edən yerdir. Bəzi nümunələr SwaggerConfig, Xüsusi Fasulye Yaradılması, eləcə də Təhlükəsizlik Konfiquratlarıdır.
  4. Funksional olaraq, istifadəçinin istəklərinə diqqət yetirən hissələr son nöqtələr, xidmətlər və məlumat əldəetmə obyektləri təbəqəsidir (yay anbarları).

Bazaya bir sorğu yolu

  1. Bir istifadəçi bir sorğu göndərdikdə, bu JSON obyekti və ya XML şəklində unserialized yaz tətbiqinə gəlir. Daxili olaraq, Bahar bu istəkləri ləğv edir və TO-lara (obyektləri) bağlayır.
  2. Tətbiqin əməliyyat hissəsini qalan hissəsindən ayırmaq üçün eyni zamanda köçürmə obyektləri və şəxslərdən istifadə edirik. Transfer obyektlərində, javax.validation.constraints paketindən və bunların həyata keçirilməsindən istifadə edərək, API sənədlərini fırıldaqçı və təsdiqləmə vasitəsi ilə bağlayırıq.
  3. Son nöqtələrdən birinə bir sorğu gəlməzdən əvvəl, oauth2-in yaz tətbiqetmələri bu istifadəçinin bu cür hərəkətə icazə verdiyini və ya olmadığını yoxlamaq üçün istifadə olunur.
  4. İstifadəçi tətbiqdən istifadə etmək səlahiyyətindədirsə, məlumat axını xidmətlərə keçir. Budur, iki şey baş verir: TOlar çevrilmiş varlıqları əldə edir, biz buraya iş məntiqi əlavə edirik, potensial olaraq digər xidmətlərə qarşı təsdiqləyirik ki, onu DAO qatına keçirək.
  5. DAO (məlumat əldə etmə qatı) yalnız müəssisələri idarə etməlidir. Bu səviyyədə heç bir ötürmə obyektinə icazə verilməməlidir.
  6. Müəssisələr verilənlər bazası cədvəlinin nümayəndəsidir. Baharda bunlar ORB texnologiyaları, hibernate kimi cədvəllərlə müqayisə edilir. Əsasən, Bahar Məlumatları layihəsi, məlumatlarla oynamağa gəldikdə həyatımızı daha da asanlaşdırır.
  7. Nəhayət, istifadəçinin sorğularında istədiyi hərəkətləri yerinə yetiririk və ona bir HTTP cavabı şəklində cavabı qaytarırıq.

Layihə

Bahar açılan CLI layihəsi və həmçinin Springboot layihələrini hazırlamaq üçün Intelij olsa da mən hələ də onu yaratmaq ənənəvi üsulu ilə gedəcəyəm.

Bağlılıqlar

Əvvəlcə https://start.spring.io/ saytına girib aşağıdakı asılılıqları əlavə edirik:

Bahar çəkmə asılılığı

2. Bunu etdikdən sonra "Yarat" düyməsini vura bilərik və bir zip faylı yükləmək üçün mövcuddur. Onu açın və IDE-də oyma layihə şəklində əlavə edin.

3. Nəhayət, həyatımızı asanlaşdırmaq üçün bir neçə daha çox asılılığa ehtiyacımız var:

Kod

  1. Əvvəlcə verilənlər bazasını modelləşdirmək üçün uçuşun kodunu əlavə etməliyik:

2. İkincisi, məlumat mənbəyini konfiqurasiya edin:

3. Yeni yaratdığımız sxemi xəritələşdirmək üçün Müəssisələr əlavə edin

4. İndi bütün dörd CRUD əməliyyatını dəstəkləyən bu qurumları idarə etmək üçün depo əlavə edəcəyik

5. Swagger konfiqurasiya əlavə edin və müəssisələrdə TO'nu çevirməkdə bizə kömək edən bir modelMapper lobya yaradın.

6. Yazılı şəkildə atlanmadan əvvəl servis qatının yaradılması lazımdır. Diqqət yetirin ki, burada Bahar tərəfindən nəzarətçilərdə istifadə etdiyimiz @Valid qeydləri ilə birlikdə seçilən bəzi qiymətləndirmə qaydalarını əlavə edirik.

7. Xidmətlər yalnız depoların üstünə gəlir. Onlar ümumiyyətlə Transactional təbiətə malik olmamalıdırlar. Məlumatların dəyişdirilməsi və iş məntiqi üçün burada.

8. Nəhayət, xarici istifadəçilərin tətbiqimizə daxil olmasına imkan verən API yaradırıq.

Nəticə olaraq, əvvəllər təsvir etdiyimiz bütün hərəkət hissələri var. Buradakı bütün layihəyə bir nəzər sala bilərsiniz.

Demo

Layihəni GitLab-dan klonlaşdıra bilərik, Postgres verilənlər bazasını fırlatmaq və tətbiqə başlamaq üçün docker-compose işlədirik.

Başlanğıcda, qeydləri izləsək, əvvəlcə Flyway verilənlər bazasını modelləşdirdiyini və yalnız bundan sonra digər hadisələrin baş verdiyini görə bilərik.

Başladıqdan sonra, yaradılan bir qarmaqarışıq səhifəyə gedə bilərik: http: // localhost: 8080 / swagger-ui.html.

Aşağıdakı kimi əməliyyatları tıklaya biləcəyimiz bir səhifəni görəcəyik.

Swagger Config Çıxış

Bundan əlavə, Intellij istifadə edirsiniz, test altında iki fayl comment.http və post.http var. Bunlar tətbiqə başladıqdan sonra serverə qarşı HTTP sorğularını işlətməyə kömək edir.

Nəticə

Xülasə etmək üçün yaxşı bir müəssisə tətbiqinin tələb etdiyi bütün texnologiyalardan keçdik, onları birlikdə işləməyə məcbur etdik və tətbiqimizi yaratdıq.

Sonrakı nədir

Gələcək bir yazıda əvvəlki OAuth tətbiqini bu ilə birlikdə qoyacağıq və son nöqtələrimizi təmin edəcəyik.

Daha məhsuldar bir yanaşmaya öyrəşmişsinizsə və ya bir neçə sualınız varsa, onları bir şərhdə bölüşməkdən və ya sadəcə [email protected] ünvanına bir e-poçt atmaqdan çəkin.