REST API-ləri veb inkişafında ən çox istifadə edilən texnologiyalardan biridir. Siz tez-tez REST nədir və RESTfuldan nə ilə fərqlənir kimi suallar eşidə bilərsiniz.

Bu suallar sektora yeni başlayan proqramçılar üçün bilməli olduğları vacib mövzudur və müştəri/server məlumat arxitekturasının müasir vəziyyətini anlamağa kömək edir.

Proqram sistemləri arasında əlaqə API sistemləri ilə mümkündür. Məsələn, mobil proqramlar hazırlayan proqramçılar arxa planda(backend) fərqli proqramlaşdırma dilindən istifadə etməli ola bilər. Bu proqramlaşdırma dili vasitəsilə qaytarılan dəyərləri mobil proqrama ötürmək üçün ünsiyyət və ya əlaqə baş verməlidir. Bu əlaqəni təmin edən struktur API məntiqidir.


API proqramların bir-biri ilə necə əlaqə saxladığını müəyyən edən xüsusi qaydalar toplusu olsa da, REST və SOAP API-ləri API-nin necə təqdim olunduğunu müəyyənləşdirir. Hər biri funksionallıq baxımından oxşardır, lakin bir neçə əsas fərqlə bir-birindən fərqlənir. Biz bu gün REST APİ-ın nə olduğuna nəzər yetirəcəyik.

REST nədir?

REST API verilənlərə daxil olmaq və istifadə etmək üçün HTTP sorğularından istifadə edən bir API arxitektura üslubudur.  Nəzəri cəhətdən hər hansı bir protokol və ya məlumat formatı ilə uyğun olsa da, REST ən çox HTTP protokolundan istifadə edir və JSON (JavaScript Object Notation) istifadə edərək məlumatları ötürür. Bu gün REST ən çox yayılmış API növlərindən biridir və Amazon, Facebook, Twitter və Google daxil olmaqla əksər böyük şirkətlər tərəfindən istifadə olunur.

Əlaqəli:

API nədir?

2000-ci ildə inkişaf etdirilən bu xidmət əslində yenə Roy Thomas Fielding tərəfindən 1996-1999-cu illərdə bir araşdırmaya başlayaraq inkişaf etdirildi. Çünki Fielding 1996-cı ildən HTTP 1.0-dakı dizaynı nəzərə alaraq, ortaya çıxarılan HTTP 1.1 dizaynı ilə oxşar şəkildə bu üslubu inkişaf etdirməyə başlamışdır. Bu kontekstdə ortaya çıxan arxitektura üstün hesab edilən xüsusiyyətlərə malikdir.

REST arxitekturasının xüsusiyyətlərinə baxsaq, bəzi təsir edici xüsusiyyətlər arasında, performans birinci yerdədir. Çünki bu arxitektura, xüsusilə istifadəçilər tərəfindən təyin olunduğu kimi, performans baxımından dominant bir üstünlüyə malikdir. Rest-in digər xüsusiyyətlərini nəzər yetirsək,

- Çox sadə və istifadəsi asan interfeysə malikdir.

- REST xidmət agentləri, yəni xidmət proksiləri tərəfindən komponentlər arasında əlaqənin görünməsini təmin edir.

- Fərqli ehtiyacları düzgün bir şəkildə yerinə yetirmək üçün komponentlərdə dəyişikliklər edilə bilər.

Bütün API-lər kimi, REST də məlumatları istifadəçilər və tətbiqlər arasında köçürməyə kömək edir. Məsələn, hər dəfə vebsayta daxil olduqda və ya telefonunuzdakı proqrama daxil olduqda, API, istifadəçinin(client) host serverlə əlaqə saxlamağına kömək edir. API-lər sorğularınızı serverə çatdıran və serverin cavabını sizə qaytaran vasitələrdir. REST arxitekturasında proses, istifadəçi serverə sorğu göndərmək üçün HTTP əmrlərindən istifadə etdikdə başlayır. Məsələn, URL yazaraq veb səhifəni açdığınız zaman əslində 'GET + URL' kimi HTTP sorğusu göndərirsiniz. Eynilə, REST  tələb etdiyiniz məlumatlara daxil olmaq üçün bu cür əmrlərdən istifadə edir. Ən ümumi HTTP əmrlərinə aşağıdakılar daxildir: 

GET - Məlumatı əldə etmək üçün 

PUT - Məlumatın vəziyyətini dəyişdirmək üçün  (məsələn, obyekt, fayl və ya blok)

POST - Məlumat yaratmaq üçün 

DELETE - Məlumatı silmək üçün 


HTTP status kodları

HTTP protokolu HTTP metodları kimi, müxtəlif HTTP status kodlarına malikdir.

Əməliyyatın nəticəsi haqqında məlumat almaq üçün HTTP status kodlarından istifadə olunur.

Aşağıdakı HTTP status kodları adətən REST əsaslı arxitekturada istifadə olunur.

200 OK – Əməliyyat uğurlu olarsa istifadə olunur.

201 CREATED – Əməliyyat uğurlu olarsa istifadə olunur. Daxil edilmiş məlumatlar qaytarılır.

204 NO CONTENT – Əməliyyat uğurlu olarsa istifadə olunur. Əlavə edilmiş və ya silinmiş məlumatlar geri qaytarılmır.

400 BAD REQUEST – Səhv sorğu və ya avtorizasiya xətası üçün istifadə olunur.

401 UNAUTHORIZED – Avtorizasiya xətası üçün istifadə olunur.

403 FORBIDDEN – Avtorizasiya və giriş xətası üçün istifadə olunur.

404 NOT FOUND – Tələb olunan əməliyyat mövcud olmadıqda istifadə olunur.

405 METHOD NOT ALLOWED – İcazə verilməyən HTTP metodundan istifadə edildikdə məlumat vermək üçün istifadə olunur.

409 CONFLICT – Birdən çox şəxsin eyni məlumat üzərində işlədiyini bildirmək üçün istifadə olunur.

500 INTERNAL SERVER ERROR – Serverdə hər hansı xəta olduqda istifadə olunur.


REST API dizaynına dair altı əsas prinsip var ki, bu, layihəniz üçün düzgün API növü olub-olmamasına qərar verərkən nəzərə alınmalıdır.

REST API Dizayn Prinsipləri

1. Stateless: Stateless strukturu sayəsində retrospektiv skan etməyə ehtiyac yoxdur və hər sorğu(reguest) arasında qeyd saxlamaq məcburiyyəti yoxdur.

2. Uniform interface: Bu məhdudiyyət, müştəri və server arasında əlaqə üçün müəyyən edilmiş prinsiplərlə təmin edilir.

3. Cacheable: REST serverləri məlumatları keşləyə bilər. Cache-Control başlığından istifadə edərək server öz müştərisinə göndərilən məlumatın keşləndiyini (yaxud olmadığını) və xüsusi cavabın etibarlı olduğu müddət haqqında məlumat verir. İlkin müddət başa çatdıqdan sonra müştəri yeniləmə üçün serverə yenidən ping göndərir. Versiya nömrələri həmçinin müştərinin tələb olunan resursun son vəziyyətinə malik olub-olmadığını müəyyən etmək üçün istifadə olunur.

4. Client-Server: REST arxitekturasında müştəri və server komponentləri aydın şəkildə müəyyən edilir və ayrılır. Bu modul dizayn hər iki komponentin digərinə təsir etmədən müstəqil şəkildə dəyişdirilməsinə imkan verir. Əksər veb müştərilər(client) və serverlər bu şəkildə tərtib edilmişdir; REST sadəcə olaraq bu məhdudiyyəti açıq hala gətirir.

5. Layered System: Layared System(laylı sistem) müştəri(client) və serverin tam ayrılması mənasına gəlir. Layering REST API-yə əlavə təhlükəsizlik əlavə edir, çünki hücumlar və ya hadisələr ayrı-ayrı təbəqələrdə təcrid oluna və saxlanıla bilir. Bundan əlavə, bütün arxitekturanın hamsı gizli qalır.

6. Code on Demand: Code on Demand məhdudiyyəti, serverin müəyyən hallarda müştəriyə(client) icra edilə bilən skriptlər və appletlər göndərmək qabiliyyətini əhatə edir. Bu, RESTful dizaynında istəyə bağlı olan yeganə prinsipdir. Tələb üzrə kod, serverin kod parçasını göndərdiyi və müştərinin onu yerinə yetirdiyi bir xüsusiyyətdir. Məsələn, kod HTML cavabı daxilində JavaScript kimi göndərilir.

RESTful nədir?


REST və RESTful-u fərqləndirmək və ya müqayisə etmək üçün REST-in nə olduğunu bilməlisiniz.

Yuxarıdada bəhs etdiyimiz kimi, REST (Representational State Transfer) əsasən bəzi prinsiplərə malik olan arxitektura tərzidir.

REST əsaslı xidmətlər yuxarıda göstərilən prinsiplərin hamısına deyil, bəzilərinə əməl edir.

RESTFUL xidmətləri isə yuxarıda göstərilən bütün prinsiplərə əməl etməsi deməkdir.

Yəni RESTful API, REST arxitekturasının bütün məhdudiyyətlərinə malik olduqda Rest API-ni təsvir etmək üçün istifadə edilən sifətdir. Yuxarıda mini siyahı kimi daxil etdiyimiz prinsiplərin hamsı olduğu zaman bu API-lar RESTful API adlanır. Siyahıdakı prinsiplərdən yalnız biri belə yerinə yetirilməsə, API "RESTful" funksiyasını itirəcək.

RESTful adətən belə bir arxitektura həyata keçirən veb xidmətlərinə istinad etmək üçün istifadə olunur. Yuxarıda qeyd edildiyi kimi, RESTful kimi təsvir edilən API REST arxitekturasının prinsiplərini qəbul edir və onlara əməl edir.