يعتبر REST API من الطرق الأكثر شيوعًا لبناء وتصميم واجهات برمجة تطبيقات (API) الخاصة بتطبيقات الويب. تتيح واجهات REST API للمطورين الاتصال بتطبيقاتهم بسلاسة مع تطبيقات أخرى ، مما يسهل تعاون المطورين وزيادة إمكانات التطبيقات.
محتوي المقال
ما هو API؟
API هي اختصار لـ “Application Programming Interface” وهو مجموعة من البرامج والأدوات التي تمكن التطبيقات من الاتصال والتفاعل مع بعضها البعض.
يمكن استخدام API لمشاركة البيانات بين التطبيقات ، وتسهيل تطوير التطبيقات المتعددة ، وزيادة قدرة التطبيقات على التفاعل مع بعضها البعض.
ما هو REST؟
REST هو اختصار لـ “Representational State Transfer” وهو نمط معماري لتصميم واجهات برمجة تطبيقات (API) تستخدم بروتوكول HTTP. يعتمد REST على مفهوم الـ “Resource” وهو أي مورد يمكن الوصول إليه من خلال واجهة API.
ما هي مكونات REST API؟
- المورد (Resource): وهو عبارة عن عنصر يتم الوصول إليه عبر واجهة REST API.
- المسار (Path): وهو العنوان الذي يتم استخدامه للوصول إلى المورد.
- الطريقة (Method): وهي الطريقة التي يتم استخدامها للوصول إلى المورد مثل GET و POST.
- الاستجابة (Response): وهي البيانات التي يتم إرجاعها من خلال واجهة REST API.
مثال على إستخدام REST API فى لغة PHP
يمكن استخدام لغة PHP او اي لغة تعمل على الخادم لتصميم REST API بسهولة باستخدام إطار عمل PHP مثل Laravel أو Symfony.
هنا مثال بسيط يقوم بإعادة قائمة من المستخدمين عند الوصول إلى عنوان URL المحدد:
<?php // تعيين رأس الاستجابة لنوع JSON header('Content-Type: application/json'); // بيانات المستخدمين $users = array( array('id' => 1, 'name' => 'John'), array('id' => 2, 'name' => 'Jane'), array('id' => 3, 'name' => 'Mike') ); // الحصول على الطريقة المستخدمة (GET أو POST) $method = $_SERVER['REQUEST_METHOD']; // التحقق من أن الطريقة المستخدمة هي GET if ($method == 'GET') { // إرجاع قائمة المستخدمين بتنسيق JSON echo json_encode($users); } else { // إرجاع رسالة الخطأ بتنسيق JSON http_response_code(405); echo json_encode(array('error' => 'Method not allowed')); }
يتم فحص الطريقة المستخدمة في الطلب وفي حالة استخدام طريقة GET، يتم إرجاع قائمة المستخدمين بتنسيق JSON. في حالة استخدام طريقة أخرى غير مسموح بها، يتم إرجاع رسالة خطأ بتنسيق JSON. يمكن استخدام هذا المثال كنقطة انطلاق لتصميم REST API باستخدام لغة PHP.
طرق HTTP Request المختلفة
هناك عدة طرق (methods) للطلبات (requests) التي يمكن استخدامها في HTTP للتفاعل مع الموارد الموجودة على الخادم (server). والطرق الأساسية للطلبات في HTTP وأكثر هذه الطرق إستخدامًا هي:
- GET:
- تستخدم لجلب (retrieve) مورد من الخادم.
- لا يغير الحالة (state) على الخادم.
- يمكن إرسال بيانات في الطلب من خلال query string في URL.
- POST:
- تستخدم لإنشاء (create) مورد جديد على الخادم.
- يمكن إرسال بيانات في الطلب عن طريق جسم الطلب (request body).
- يغير الحالة (state) على الخادم.
- PUT:
- تستخدم لتحديث (update) مورد موجود على الخادم.
- يمكن إرسال بيانات في الطلب عن طريق جسم الطلب (request body).
- يغير الحالة (state) على الخادم.
- DELETE:
- تستخدم لحذف (delete) مورد موجود على الخادم.
- يمكن إرسال بيانات في الطلب عن طريق جسم الطلب (request body).
- يغير الحالة (state) على الخادم.
- PATCH:
- تستخدم لتحديث (update) جزء من مورد موجود على الخادم.
- يمكن إرسال بيانات في الطلب عن طريق جسم الطلب (request body).
- يغير الحالة (state) على الخادم.
- HEAD:
- تستخدم للحصول على المعلومات الرئيسية الموجودة في رأس الاستجابة (response header) لمورد معين.
- لا يحتوي على جسم الطلب (request body) في الطلب ولا يحتوي على جسم الاستجابة (response body) في الاستجابة.
مميزات REST API
تتميز واجهات REST API بعدة مميزات منها:
- سهولة الاستخدام: يمكن استخدام REST API بسهولة من قبل المطورين.
- القابلية للتوسع: يمكن توسيع REST API بسهولة لدعم مزيد من الموردين والمستهلكين.
- الأداء الجيد: يتميز REST API بأداء سريع وفعال.
- الأمان: توفر REST API ميزات الأمان اللازمة لحماية البيانات والوصول إليها.
الأنواع الأخرى لمعماريات API
هناك أنواع أخرى من معماريات API وأشهرها:
- GraphQL: وهو نمط معماري جديد يستخدم لتحسين أداء واجهات برمجة التطبيقات. يتيح GraphQL للعميل (الجانب المستخدم للواجهة) تحديد البيانات التي يريد استردادها من الخادم (الجانب الخادم للواجهة).
- SOAP (Simple Object Access Protocol): وهو نمط معماري يستخدم بروتوكول XML للاتصال بين التطبيقات.
- JSON-RPC: وهو نمط معماري يستخدم JSON كبروتوكول للاتصال بين التطبيقات.
- XML-RPC: وهو نمط معماري يستخدم XML كبروتوكول للاتصال بين التطبيقات.