Əvvəlki yazıda API barəsində öyrəndik. İndi isə gəlin API texnologiyasında yeni fenomendən – GraphQL-dən danışaq.
Bəziləri onu yüksək qiymətləndirir, bəziləri yox. Yetərincə əminəm ki, GraphQL-in nə olduğunu və ənənəvi yanaşmadan necə fərqləndiyini bilmək istəyiriniz.
Bu məqalənin məqsədi GraphQL-in əsas imkanlarını önə çəkmək, bu API növü ilə bağlı mənfi və müsbət cəhətləri müzakirə eləməkdir.
Adətən GraphQL front-endə yönəlmiş API texnologiyası adlandırırlar, çünki bu, yaradıcılara imkan verir ki, misli görünməmiş bir asan yolla data tələbi göndərsinlər. Faceook-un təqdim elədiyi bu sorğu dilinin məqsədi klient tətbiqlərini instinktiv və uzlaşdırıla bilən formatda düzənləmək, data tələbi və qarşılıqlı əlaqəni nizama salmaqdır.
Bunun ən yaxşı tərəfi odur ki, həmin dil hər hansı konkret databaza menecment sistemindən asılı deyil və sizin əlinizin altnda olan data və kodlarla uzlaşır.
Adi REST ilə bağlı əsas problem odur ki, klient fərdiləşdirilmiş data dəsti tələb eləyə bilmir. Bundan əlavə, çoxşaxəli hədəf məntəqələrini işlədib idarə eləmək başqa bir çətinlikdir, çünki, klientlər çox vaxt müxtəlif hədəf məntəqələrindən data tələb edir.
GraphQL serverini quraşdıranda mürəkkəb data yığımı və yönləndirmə üçün adi bir URL bəs edir. Yəni istifadəçi serverdən data dəstini tələb eləmək üçün nə lazım olduğunu bildirməklə silsilə sorğular göndərə bilir.
Niyə GraphQL?
Bir xeyli GraphiQL çıxışları ilə məşğul olandan, bu haqda xeyli eşidəndən sonra belə bir ideyaya yoluxdum: əlimdəki data üçün elə bir sxem seçim ki, klientin tamamilə eyni biçimdə sorğu almasına imkan versin. Minimal miqdarı onlayn göndərmək, sorğuları optimal yük üçün qruplaşdırmaq və qalanlarını həm klient, həm server tərəfdə yaddaşda saxlamaq ideyası xoşuma gəldi.
Başqa nəyə ehtiyacımız var?
Bu, məni uzun müddət düşündürən sualdır. GraphQL serveri ilə başlamağa aid möhtəşəm örnəklər göstərə bilərik, ancaq aydın olanda ki, konkret sahədə həll funksiyası datanın çəkilməsi olmalıdır, bunların hamısı tamamlanmamış görsənir. Yəni işi başa çatdırmaq üçün bu hissələri bir yerə yığıram:
- Yaratma və yerləşdirmə konteyneri.
- Server
- Databaza
- Sorğu serveri
- ORM
- GraphQL adapteri üçün ORM
- GraphQL sxemi
- Giriş
- Autentiklədirmə və icazə
- Sınaqlar
Sərlövhədəki foto: Medium.com