Salam, bu gün biz əmək bazarında çox maraqlı və ən əsası tələb olunan mövzunu - REST-i öyrənəcəyik. REST-ə ümumi baxış.  1-ci hissə: REST nədir - 1REST-in icmalını üç hissəyə böləcəyik:
  1. Birinci hissədə REST-in tarixinə toxunacağıq və REST-in əsaslandığı prinsipləri təsvir edəcəyik.

  2. İkincidə, HTTP protokolu vasitəsilə müştəri ilə server arasında rabitənin necə baş verdiyinə baxacağıq.

  3. Üçüncüsü, kiçik bir RESTful tətbiqi yazacağıq, onu Postman proqramı ilə sınaqdan keçirəcəyik.

Məqalə aşağıdakı terminlərlə tanış olan oxucular üçün nəzərdə tutulub:
  • HTTP;
  • URL və URI;
  • JSON və daha az dərəcədə XML;
  • Asılılıq Enjeksiyonu.

Hissə 1. REST nədir

REST, İT dünyasındakı bir çox şey kimi, Nümayəndəlik Dövlətinin Transferinin qısaldılmasıdır . Bu, kompüter şəbəkəsində paylanmış sistem komponentləri arasında qarşılıqlı əlaqənin memarlıq üslubudur. Sadə dillə desək, REST hər biri fiziki olaraq müxtəlif yerlərdə yerləşə bilən sistemin müxtəlif komponentləri arasında qarşılıqlı əlaqə (məlumat mübadiləsi) üslubunu müəyyən edir. Bu memarlıq üslubu paylanmış sistemin dizaynı zamanı nəzərə alınan ardıcıl məhdudiyyətlər toplusunu təmsil edir. Bu məhdudiyyətlər bəzən REST prinsipləri adlanır. Çox deyil, cəmi 6 ədəd. Onlar haqqında bir az sonra danışacağıq.
REST nəzərə alınmaqla qurulmuş proqramlar, yəni. REST tərəfindən qoyulan məhdudiyyətləri pozmayanlar RESTful adlanır.

REST tarixi

REST termini HTTP protokolunun yaradıcılarından biri olan Roy Fieldinq tərəfindən 2000-ci ildə "Architectural Styles and the Design of Network-based Software Architectures" adlı doktorluq dissertasiyasında istifadə edilmişdir. Deyə bilərik ki, REST termini hələ də gəncdir, baxmayaraq ki, onun konsepsiyası World Wide Web-in əsasını təşkil edir. Biz bu terminin yaranma tarixinə dərindən girməyəcəyik. Orijinal mənbələrə dalmaq istəyirsinizsə, Fieldinqin dissertasiyasına nəzər salın .

REST məhdudiyyətləri və prinsipləri

Yuxarıda qeyd edildiyi kimi, REST paylanmış sistemin komponentlərinin bir-biri ilə necə qarşılıqlı əlaqədə olmasını müəyyənləşdirir. Ümumiyyətlə, bu, sorğu-cavab vasitəsilə baş verir. Sorğunu göndərən komponent müştəri adlanır ; Sorğunu emal edən və müştəriyə cavab göndərən komponent server adlanır . Sorğular və cavablar ən çox HTTP (HyperText Transfer Protocol) vasitəsilə göndərilir. Tipik olaraq, server bir növ veb proqramdır. Müştəri sadəcə bir şey deyil, kifayət qədər çox ola bilər. Məsələn, serverdən məlumat tələb edən mobil proqram. Və ya məlumatları yükləmək üçün veb-səhifədən serverə sorğu göndərən brauzer. A tətbiqi B proqramından məlumat tələb edə bilər. Onda A B ilə əlaqəli müştəri, B isə A ilə əlaqəli serverdir. Eyni zamanda A C, D, D və s.-dən sorğuları emal edə bilər. Bu halda A tətbiqi həm server, həm də müştəridir. Hamısı kontekstdən asılıdır. Bir şey aydındır: sorğunu göndərən komponent müştəridir. Sorğu qəbul edən, emal edən və ona cavab verən komponent serverdir. Bununla belə, komponentləri sorğu-cavab vasitəsilə əlaqə quran hər sistem REST (və ya RESTful) sistemi deyil. Sistemin RESTful hesab edilməsi üçün o, altı REST məhdudiyyətinə “uyğun” olmalıdır:

1. Arxitekturanın müştəri-server modelinə gətirilməsi

Bu məhdudiyyətin əsasını ehtiyacların diferensiallaşdırılması təşkil edir. Müştəri interfeysinin ehtiyaclarını verilənləri saxlayan serverin ehtiyaclarından ayırmaq lazımdır. Bu məhdudiyyət müştəri kodunun digər platformalara daşınma qabiliyyətini artırır, server hissəsinin sadələşdirilməsi isə sistemin miqyasını yaxşılaşdırır. “Müştəri” və “server” arasındakı fərq onlara bir-birindən asılı olmayaraq inkişaf etməyə imkan verir.

2. Vəziyyətin olmaması

REST arxitekturası aşağıdakı şərtin yerinə yetirilməsini tələb edir. Sorğular arasında serverin müştərinin vəziyyəti haqqında məlumat saxlamasına ehtiyac yoxdur və əksinə. Müştəridən gələn bütün sorğular elə strukturlaşdırılmalıdır ki, server sorğunu tamamlamaq üçün bütün lazımi məlumatları alsın. Beləliklə, həm server, həm də müştəri əvvəlki mesajlara etibar etmədən alınan istənilən mesajı “başa düşə” bilər.

3. Keşləmə

Müştərilər server cavablarını keşləyə bilər. Bunlar, öz növbəsində, müştərilərin sonrakı sorğulara cavab olaraq köhnəlmiş və ya yanlış məlumat almaması üçün açıq və ya gizli şəkildə keş və ya keş edilə bilməyən kimi təyin edilməlidir. Keşləmənin düzgün istifadəsi bəzi müştəri-server qarşılıqlı əlaqəsini tamamilə və ya qismən aradan qaldırmağa kömək edir, sistemin performansını və genişlənməsini daha da artırır.

4. İnterfeys vahidliyi

REST arxitekturasının əsas tələblərinə vahid, vahid interfeys daxildir. Müştəri həmişə hansı formatda və hansı ünvanlara sorğu göndərməli olduğunu başa düşməlidir və server də öz növbəsində müştəri sorğularına hansı formatda cavab verməli olduğunu başa düşməlidir. Bu, nəyin, hara, hansı formada və necə göndəriləcəyini təsvir edən və vahid interfeys olan müştəri-server qarşılıqlı əlaqəsi üçün vahid formatdır.

5. Laylar

Laylar şəbəkələrin iyerarxik quruluşuna aiddir. Bəzən müştəri birbaşa serverlə, bəzən isə sadəcə aralıq qovşaqla əlaqə saxlaya bilir. Aralıq serverlərin istifadəsi yük balansı və paylanmış keşləmə vasitəsilə miqyaslılığı artıra bilər. Bir misal verək. Bütün dünyada məşhur olan mobil tətbiqi təsəvvür edək. Onun ayrılmaz hissəsi şəkillərin yüklənməsidir. Milyonlarla istifadəçi olduğu üçün bir server belə ağır yükə tab gətirə bilməzdi. Sistemin təbəqələrə bölünməsi bu problemi həll edəcək. Müştəri aralıq qovşaqdan şəkil tələb edəcək, aralıq qovşaq hazırda ən az yüklənmiş serverdən şəkli tələb edəcək və şəkli müştəriyə qaytaracaq. Keşləmə burada iyerarxiyanın hər bir səviyyəsində düzgün tətbiq olunarsa, sistemin yaxşı miqyaslanmasına nail olmaq olar.

6. Tələb üzrə kod (isteğe bağlı məhdudiyyət)

Bu məhdudiyyət müştərinin serverdən proqramlar və ya skriptlər şəklində kodu endirməklə öz funksionallığını genişləndirə biləcəyini nəzərdə tutur.

REST-in faydaları

Yuxarıda göstərilən bütün məhdudiyyətlərə cavab verən proqramlar aşağıdakı üstünlüklərə malikdir: etibarlılıq (müştəri vəziyyəti haqqında məlumatların saxlanmasına ehtiyac yoxdur, itə bilər);
  • performans (kesh istifadəsinə görə);
  • miqyaslılıq;
  • qarşılıqlı əlaqə sisteminin şəffaflığı;
  • interfeyslərin sadəliyi;
  • komponentlərin daşınması;
  • dəyişiklik etmək asanlığı;
  • inkişaf etmək, yeni tələblərə uyğunlaşmaq bacarığı.
2-ci hissə: müştəri və server arasında əlaqə 3-cü hissə: Spring Boot-da RESTful xidmət yaratmaq