JavaRush /Java Blogu /Random-AZ /REST-ə ümumi baxış. Hissə 2: Müştəri və server arasında ə...

REST-ə ümumi baxış. Hissə 2: Müştəri və server arasında əlaqə

Qrupda dərc edilmişdir
1-ci hissə: REST nədir Bu hissədə biz müştəri ilə server arasında rabitənin necə baş verdiyini daha yaxından nəzərdən keçirəcəyik. Yol boyu yeni terminlər açıqlayacağıq və onlara izahat verəcəyik. REST-ə ümumi baxış.  2-ci hissə: müştəri və server arasında əlaqə - 1Hər şeyi aydınlaşdırmaq (olmaq) üçün bəzi RESTful tətbiqi nümunəsindən istifadə edərək müştəri-server əlaqəsini təhlil edəcəyik. Deyək ki, biz müştərilər və onların sifarişləri haqqında məlumat saxlaya bilən veb tətbiqi inkişaf etdiririk. Bunlar. sistemimiz bəzi obyektləri manipulyasiya etməyə qadirdir: onları yaratmaq, redaktə etmək, silmək və onlar haqqında məlumat vermək. Bu qurumlar olacaq:
  • müştərilər - müştərilər;
  • sifarişlər - müştəri sifarişləri;
  • əşyalar - mallar.
REST arxitekturasında müştərilər məlumatları əldə etmək və ya dəyişdirmək üçün serverə sorğular göndərirlər və serverlər müştərilərə sorğularına cavablar göndərirlər.

İstək

Müştəri sorğuları demək olar ki, həmişə HTTP üzərindən edilir. Ümumiyyətlə, HTTP sorğuları bir neçə komponentdən ibarətdir:
  • HTTP metodu;
  • başlıq;
  • URI;
  • sorğu orqanı.
Aşağıda hər bir komponent hissəsinə daha ətraflı baxacağıq.

URI və Resurslar

Müştərilərin sorğular vasitəsilə əldə etdiyi və ya dəyişdirdiyi məlumatlar resurs adlanır. Müştəri-server qarşılıqlı əlaqəsinin əsasını resursların manipulyasiyası təşkil edir. REST-dəki resurslar ad verilə bilən hər şeydir. Bunlar müəyyən mənada Java-dakı siniflərə bənzəyir. Java-da biz hər şey üçün sinif yarada bilərik. REST-də də eynidir - resurs hər hansı bir şey ola bilər: istifadəçi, sənəd, hesabat, sifariş. Bütün bunlar ya hansısa varlığın abstraksiyası və ya konkret bir şey ola bilər, məsələn, fayl - şəkil, video, animasiya, PDF faylı. Məsələn, bizim 3 resursumuz var:
  • müştərilər - müştərilər;
  • sifarişlər - müştəri sifarişləri;
  • əşyalar - mallar.
Müştərilər son nöqtələr və ya son nöqtələr adlanan sorğular göndərirlər. Çox sadə desək, son nöqtə şəbəkədəki ünvan kimi bir şeydir. Daha dərinə getmək üçün son nöqtə URI- dir : mücərrəd və ya fiziki resursu müəyyən edən simvollar ardıcıllığı. Uniform Resource Identifier - vahid resurs identifikatoru. Bəzən son nöqtə və ya URI yol adlanır - resursa gedən yol. Bu məqalənin məqsədləri üçün biz URI terminindən istifadə edəcəyik. Hər bir xüsusi resursun unikal URI-si olmalıdır. Hər bir resursun həmişə öz URI-yə malik olmasını təmin etmək məsuliyyəti server tərtibatçısının çiyinlərindədir. Bizim nümunəmizdə biz tərtibatçıyıq, ona görə də bunu necə bildiyimiz kimi edəcəyik. Necə ki, əlaqəli verilənlər bazasında əsas açarı müəyyən rəqəmli ID-yə təyin etmək çox vaxt adətdir, REST-də hər resursun öz ID-si var. Tez-tez olur ki, REST-dəki resursun identifikatoru bu resurs haqqında məlumatın saxlandığı verilənlər bazasındakı qeydin identifikatoruna uyğun gəlir. REST URI-ləri adətən bəzi resursu təsvir edən ismin cəm forması ilə başlayır. Məsələn, müştərilər sözündən. Sonra, şəxsiyyət kəsik işarəsi ilə göstərilir - müəyyən bir müştərinin identifikatoru. Nümunələr:
  • /müştərilər - bütün mövcud müştərilərin URI-ləri;
  • /clients/23 - konkret müştərinin URI-si, yəni ID=23 olan müştəri;
  • /clients/4 - konkret müştərinin URI-si, yəni ID=4 olan müştəri.
Ancaq bu hamısı deyil. URI-ni ona sifarişlər əlavə etməklə genişləndirə bilərik:
  • /clients/4/orders — 4 nömrəli müştərinin bütün sifarişlərinin URI-si;
  • /müştərilər/1/sifarişlər/12 - 1 nömrəli müştərinin 12 nömrəli sifarişinin URI.
Bu zənciri davam etdirib mal əlavə etsək, əldə edirik:
  • /clients/1/orders/12/items — 1 nömrəli müştəri tərəfindən hazırlanmış 12 nömrəli sifariş üzrə bütün məhsulların siyahısının URI-si.
Yuva səviyyələri ilə əsas şey URI-ləri intuitiv etməkdir.

HTTP metodu

HTTP Metod (İngilis HTTP Method) resurs üzərində əsas əməliyyatı göstərən idarəetmə elementləri və ayırıcılar istisna olmaqla, hər hansı simvolların ardıcıllığıdır. Bir neçə ümumi HTTP metodu var. RESTful xidmətlərində ən çox istifadə olunanları sadalayırıq:
  • GET - konkret resurs (ID vasitəsilə) və ya resurslar toplusu haqqında məlumat əldə etmək üçün istifadə olunur;
  • POST - yeni resurs yaratmaq üçün istifadə olunur;
  • PUT - resursu dəyişdirmək üçün istifadə olunur (ID vasitəsilə);
  • DELETE - resursu silmək üçün istifadə olunur (ID vasitəsilə).

Başlıqlar

Sorğular, eləcə də cavablar HTTP başlıqlarını ehtiva edir. Sorğu (və ya cavab) haqqında əlavə məlumat göndərirlər. Başlıqlar açar-dəyər cütləridir. Ən çox yayılmış başlıqların siyahısını Vikipediya səhifəsində oxuya bilərsiniz . REST ilə müştərilər tez-tez serverə sorğularında Qəbul başlığını göndərə bilərlər. Serverə müştərinin ondan hansı formatda cavab gözlədiyini bildirmək lazımdır. MIME növü adlanan siyahıda müxtəlif format seçimləri təqdim olunur. MIME (Çoxməqsədli İnternet Poçt Genişləndirmələri) informasiyanın kodlaşdırılması və mesajların İnternet üzərindən göndərilə bilməsi üçün formatlaşdırılması üçün spesifikasiyadır. Hər bir MIME növü kəsik işarəsi ilə ayrılmış iki hissədən ibarətdir: növ və alt növ. Müxtəlif növ fayllar üçün MIME növlərinə nümunələr:
  • mətn - mətn/düz, mətn/css, mətn/html;
  • şəkil - şəkil/png, şəkil/jpeg, şəkil/gif;
  • audio - audio/wav, audio/mpeg;
  • video - video/mp4, video/ogg;
  • proqram - application/json, application/pdf, application/xml, application/octet-stream.
Ümumilikdə sorğu aşağıdakı başlığa malik ola bilər:
Accept:application/json
Bu başlıq serverə müştərinin JSON formatında cavab almağı gözlədiyini bildirir.

Sorğu orqanı

Müştəri tərəfindən serverə göndərilən mesaj. Sorğunun gövdəsi olub-olmaması HTTP sorğusunun növündən asılıdır. Məsələn, GET və DELETE sorğuları adətən heç bir sorğu orqanını ehtiva etmir. Lakin PUT və POST aşağıdakıları ehtiva edə bilər: hamısı sorğu növünün funksional məqsədi ilə bağlıdır. Axı, məlumatları qəbul etmək və onu id (URL-da ötürülür) ilə silmək üçün serverə əlavə məlumat göndərmək lazım deyil. Ancaq yeni resurs (POST sorğusu) yaratmaq üçün bu resursu köçürməlisiniz. Eyni şey mövcud resursun dəyişdirilməsinə də aiddir. REST-də sorğunun mətnini ötürmək üçün ən çox XML və ya JSON formatlarından istifadə olunur. Ən çox yayılmış format JSON-dur. Tutaq ki, serverə sorğu göndərmək istəyirik və orada yeni resurs yaradırıq. Xatırlayırsınızsa, nümunə olaraq müştəri sifarişlərini idarə edən proqrama baxdıq. Tutaq ki, biz yeni müştəri yaratmaq istəyirik. Bizim vəziyyətimizdə müştərilər haqqında aşağıdakı məlumatları saxlayırıq: Ad E-poçt Telefon nömrəsi Onda belə sorğunun əsas mətni aşağıdakı JSON ola bilər:
{
  "name" : "Amigo",
  "email" : "amigo@jr.com",
  "phone" : "+7 (191) 746-43-23"
}

Müraciətlərin birləşdirilməsi

Beləliklə, müştəri sorğusunun nədən ibarət ola biləcəyinə baxdıq. İndi təsviri olan sorğulardan bəzi nümunələr verək
Sorğu Təsvir

GET /clients/23
Accept : application/json, application/xml
json və ya xml formatında 23 nömrəli müştəri haqqında məlumat əldə edin

POST /clients
{
  "name" : "Amigo",
  "email" : "amigo@jr.com",
  "phone" : "+7 (191) 746-43-23"
}
Aşağıdakı sahələrlə yeni müştəri yaradın:
Ad - Amigo
E-poçt - amigo@jr.com
Tel. — +7 (191) 746-43-23

PUT /clients/1
{
  "name" : "Ben",
  "email" : "bigben@jr.com",
  "phone" : "+380 (190) 346-42-13"
}
1 nömrəli müştərini aşağıdakı kimi redaktə edin:
Ad - Ben
E-poçt - bigben@jr.com
Tel. — +380 (190) 346-42-13

DELETE /clients/12/orders/6
12 saylı müştəridən 6 saylı sifarişi sistemdən silin

Cavablar

Serverin cavabları haqqında bir neçə söz deyək. Cavab adətən aşağıdakı hissələrdən ibarətdir:
  • cavab kodu;
  • başlıqlar;
  • cavab orqanı.
Ümumiyyətlə, cavab başlıqları sorğu başlıqlarından çox da fərqlənmir. Bundan əlavə, bəzi başlıqlar həm cavablarda, həm də sorğularda istifadə olunur. Düşünürəm ki, cavab orqanı ilə də hər şey aydındır. Orqan tez-tez müştərinin tələb etdiyi məlumatları qaytarır. Məlumat GET sorğuları üçün eyni JSON formatında qaytarıla bilər. Amma son hissə bir az daha maraqlıdır.

HTTP cavab kodları

HTTP cavab kodlarına daha yaxından nəzər salaq. Vikipediyadan bir sitat: HTTP status kodu HTTP protokolu vasitəsilə sorğular üçün server cavabının birinci sətirinin bir hissəsidir. Bu, üç onluq rəqəmdən ibarət tam ədəddir. Birinci rəqəm vəziyyətin sinfini göstərir. Cavab kodunun ardınca adətən ingilis dilində boşluqla ayrılmış izahlı ifadə gəlir və bu, şəxsə bu xüsusi cavabın səbəbini izah edir. Nümunələr:
  • 201 yaradılmışdır;
  • 401 İcazəsiz;
  • 507 Yaddaş qeyri-kafi.
Müştəri cavab kodundan sorğusunun nəticələrini öyrənir və bundan sonra hansı tədbirləri görəcəyini müəyyən edir. Cavab kodları bir neçə qrupa bölünür:
  • 1ХХ - məlumat;
  • 2ХХ - müştərinin sorğusunun uğurla qəbul edilməsi və işlənməsi halları barədə məlumat vermək;
  • 3XX - müştəriyə məlumat verin ki, əməliyyatı uğurla başa çatdırmaq üçün adətən başqa bir URI-dən istifadə etməklə başqa sorğu vermək lazımdır;
  • 4ХХ - müştəri xətası. Məsələn, yanlış qurulmuş sorğu və ya müştəri mövcud olmayan resurs tələb etdikdə baş verə bilən məşhur 404 Tapılmamış kodu;
  • 5ХХ - server xətası. Serverin günahı üzündən əməliyyat uğursuz olarsa, müştəriyə qaytarılır.
Burada bütün kodlar haqqında ətraflı oxuya bilərsiniz . 1-ci hissə: REST nədir 3-cü hissə: Spring Boot-da RESTful xidmətin yaradılması
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION