Proqramlaşdırma dünyasında API (Application Programming Interface), bir proqramın başqa bir proqramla necə əlaqə yaratdığını təyin edən bir “arayüz” kimi fəaliyyət göstərir. API-lər, müxtəlif sistemlər arasında məlumat mübadiləsi üçün istifadə olunur. Lakin API termini çox genişdir və onun müxtəlif növləri var. Bu məqalədə biz API, REST API, və RESTful API-ni ətraflı şəkildə izah edəcəyik, aralarındakı fərqləri aydınlaşdıracağıq və digər API növlərinə də toxunacağıq.
1. API (Application Programming Interface): Nədir?
API, iki proqram arasında məlumat mübadiləsi üçün hazırlanmış bir interfeysdir. Başqa sözlə, bir proqramın digər proqrama necə “danışacağını” təyin edən qaydalar toplusudur.
Necə İşləyir?
API, bir proqramın digər proqramın funksiyalarını çağırmasına imkan verir. Məsələn:
Bir mobil tətbiqin serverdən məlumat almaq üçün istifadə etdiyi qaydalar.
Bir web saytının Google Maps API-dan istifadə edərək xəritə göstərməsi.
API Növləri
API-lər, istifadə olunan texnologiyaya görə aşağıdakı kimi təsnif edilə bilər:
Web API-lər: HTTP protokolunu istifadə edən API-lərdir. Məsələn: REST API, GraphQL API.
Library/API Framework-ları: Proqramçıların kodlarını asanlaşdırmaq üçün hazırlanmış hazır funksiyalar toplusudur. Məsələn: jQuery, React.
Operating System API-lər: Əməliyyat sistemi funksiyalarına giriş üçün hazırlanmış API-lərdir. Məsələn: Windows API.
Database API-lər: Verilənlər bazası ilə əlaqə qurmaq üçün istifadə olunan API-lərdir. Məsələn: JDBC, ODBC.
Məsələn
Bir kitab mağazası üçün API:
GET /books – Kitabların siyahısını alır.
POST /books – Yeni kitab əlavə edir.
2. REST API: Nədir?
REST (Representational State Transfer) API, HTTP protokolunu istifadə edərək məlumat mübadiləsi üçün hazırlanmış bir arxitekturdur. REST API, HTTP metodlarından (GET, POST, PUT, DELETE) istifadə edərək resurslarla (məlumatlarla) işləyir.
REST-in Əsas Prinsipləri
Statelessness (Vəziyyətsizlik): Hər bir sorğu tamamilə müstəqildir. Server, əvvəlki sorğular haqqında heç bir məlumat saxlamır.
Məsələn: Bir istifadəçi giriş edəndə, hər dəfə login məlumatları göndərilməlidir.
Client-Server Architecture (Müştəri-Server Arxitekturası): Müştəri (client) və server bir-birindən ayrıdır. Müştəri, serverdən məlumat alır və ya serverə məlumat göndərir.
Uniform Interface (Standart İnterfeys): Resurslar URL-lərlə təmsil olunur.
Məsələn: /users – İstifadəçilərin siyahısı, /users/1 – ID-si 1 olan istifadəçi.
Cacheability (Keş Edilə Bilənlik): Server tərəfindən göndərilən cavablar keş edilə bilər. Bu, performansı artırır.
Layered System (Təbəqəli Sistem): Sistemdə bir neçə təbəqə ola bilər (proxy, gateway və s.).
Code on Demand (İsteğe Bağlı Kod Gönderimi): Server, müştəriyə lazım olan kodu (JavaScript və s.) dinamik şəkildə göndərə bilər.
HTTP Metodları
REST API, HTTP metodlarından istifadə edərək resurslarla işləyir:
GET: Məlumat almaq üçün.
POST: Yeni məlumat yaratmaq üçün.
PUT: Mövcud məlumatı yeniləmək üçün.
DELETE: Məlumat silmək üçün.
Məsələn
Bir kitab mağazası üçün REST API:
GET /books – Kitabların siyahısını alır.
POST /books – Yeni kitab əlavə edir.
PUT /books/1 – ID-si 1 olan kitabın məlumatlarını yeniləyir.
DELETE /books/1 – ID-si 1 olan kitabı silir.
3. RESTful API: Nədir?
RESTful API, REST prinsiplərinə tam uyğun olaraq hazırlanmış API deməkdir. Bütün REST API-ləri avtomatik olaraq RESTful deyil. Bir API-nin RESTful olabilmesi üçün REST-in bütün prinsiplərinə riayət etməlidir.
REST vs RESTful Fərqi
REST API: REST prinsiplərini istifadə edən API.
RESTful API: REST prinsiplərinə tam uyğun olaraq hazırlanmış API.
RESTful API-nin Əsas Xüsusiyyətləri
Statelessness: Hər bir sorğu tamamilə müstəqildir.
Client-Server Architecture: Müştəri (client) və server bir-birindən ayrıdır.
Cacheability: Server tərəfindən göndərilən cavablar cache edilə bilər.
Uniform Interface: Resurslar üçün standart bir interfeys var (məsələn, /users və /users/1).
Layered System: Sistemdə bir neçə təbəqə ola bilər (proxy, gateway və s.).
Məsələn
REST API: /getUsers və /createUser kimi URL-lərdən istifadə edə bilər (REST prinsiplərinə tam uyğun deyil).
RESTful API: /users (GET), /users (POST), /users/{id} (PUT), /users/{id} (DELETE) kimi standart URL-lərdən istifadə edir.
4. Digər API Növləri
1. SOAP API
SOAP (Simple Object Access Protocol), XML əsaslı bir API protokoludur. REST-dən fərqli olaraq, SOAP daha strukturlu və ağır bir protokoldur. Adətən bank sistemləri və enterprise-level tətbiqlərdə istifadə olunur.
Xüsusiyyətləri:
XML formatında məlumat ötürür.
Güvenlik üçün WS-Security standartından istifadə edir.
Stateful və Stateless işləyə bilər.
2. GraphQL API
GraphQL, Facebook tərəfindən hazırlanmış bir API query dilidir. REST-dən fərqli olaraq, müştəri yalnız lazım olan məlumatları soruşa bilər.
Xüsusiyyətləri:
Müştəri, lazım olan məlumatları seçə bilər.
Single Endpoint: Bütün sorğular eyni URL-dən gedir.
Real-time məlumatlar üçün WebSocket dəstəkləyir.
3. RPC API
RPC (Remote Procedure Call), bir proqramın digər proqramda funksiya çağırmasını təmin edən bir API növüdür. Adətən JSON-RPC və ya XML-RPC formatlarında istifadə olunur.
Xüsusiyyətləri:
Sadə və minimaldir.
REST-dən fərqli olaraq, funksiyalar üzərində işləyir.
5. REST API vs SOAP API vs GraphQL API
(Bu bölmədə müqayisəli cədvəl ola bilər, lakin Markdown-da sadə izahat kimi saxlanılıb.)
REST API: HTTP əsaslı, sadə və geniş istifadə olunur.
SOAP API: XML əsaslı, strukturlu və təhlükəsizlik üçün idealdır.
GraphQL API: Müştəri yönümlü, çevik və real-time dəstəkləyir.
Nəticə
API: Ümumi bir anlayışdır, hər hansı bir proqramın başqa proqramla necə əlaqə yaratdığını təyin edir.
REST API: API-nin bir növüdür, HTTP protokolunu və REST prinsiplərini istifadə edir.
RESTful API: REST prinsiplərinə tam uyğun olaraq hazırlanmış API-dir.
Digər API Növləri: SOAP, GraphQL, RPC kimi API-lər də mövcuddur. Hər birinin özünəməxsus üstünlükləri və məhdudiyyətləri var.