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-in icmalını üç hissəyə böləcəyik:
-
Birinci hissədə REST-in tarixinə toxunacağıq və REST-in əsaslandığı prinsipləri təsvir edəcəyik.
-
İkincidə, HTTP protokolu vasitəsilə müştəri ilə server arasında rabitənin necə baş verdiyinə baxacağıq.
-
Üçüncüsü, kiçik bir RESTful tətbiqi yazacağıq, onu Postman proqramı ilə sınaqdan keçirəcəyik.
- 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ığı.
GO TO FULL VERSION