تطوير API: دليل الأساسيات للمطورين

REST vs GraphQL. Authentication. Rate limiting. Documentation. نشرح أساسيات بناء API محترف — مع أمثلة عملية.
ما هي الـ API؟
API (واجهة برمجة التطبيقات) هي الطريقة التي تتواصل بها البرامج مع بعضها. عندما يفتح تطبيق الطقس على جوالك ويعرض درجة الحرارة، التطبيق لا يقيس الحرارة بنفسه — بل يرسل طلباً عبر API لسيرفر يملك البيانات، ويستقبل الرد ويعرضه.
كل تطبيق تستخدمه يومياً يعتمد على عشرات الـ APIs: الدفع الإلكتروني، الإشعارات، تسجيل الدخول، الخرائط، والمزيد.
أنواع الـ APIs
1. REST API
الأكثر انتشاراً. يعتمد على بروتوكول HTTP ويستخدم عناوين URL للوصول للموارد:
| الطريقة | الوظيفة | مثال |
|---|---|---|
| GET | قراءة بيانات | GET /api/users — جلب قائمة المستخدمين |
| POST | إنشاء بيانات | POST /api/users — إنشاء مستخدم جديد |
| PUT | تحديث بيانات | PUT /api/users/1 — تحديث بيانات مستخدم |
| DELETE | حذف بيانات | DELETE /api/users/1 — حذف مستخدم |
2. GraphQL
بديل لـ REST طوّرته Meta. العميل يحدد بالضبط البيانات اللي يحتاجها:
- طلب واحد بدل عدة طلبات
- لا بيانات زائدة
- مناسب للتطبيقات المعقدة
- منحنى تعلم أعلى
3. WebSocket
للتواصل اللحظي ثنائي الاتجاه:
- الدردشة المباشرة
- الإشعارات الفورية
- لوحات المراقبة الحية
- الألعاب متعددة اللاعبين
4. gRPC
بروتوكول من Google للتواصل بين الخدمات المصغرة (Microservices). أسرع من REST لكن أعقد في الإعداد.
مبادئ تصميم REST API
بنية URL واضحة
- استخدم الأسماء لا الأفعال: /api/orders وليس /api/getOrders
- الجمع للمجموعات: /api/users وليس /api/user
- التداخل للعلاقات: /api/users/1/orders
- الإصدار في المسار: /api/v1/users
رموز الحالة HTTP
| الرمز | المعنى | الاستخدام |
|---|---|---|
| 200 | نجاح | الطلب تم بنجاح |
| 201 | تم الإنشاء | سجل جديد أُنشئ |
| 400 | طلب خاطئ | بيانات غير صحيحة من العميل |
| 401 | غير مصرّح | يحتاج تسجيل دخول |
| 403 | محظور | لا يملك الصلاحية |
| 404 | غير موجود | المورد غير موجود |
| 422 | خطأ تحقق | البيانات لم تجتز التحقق |
| 500 | خطأ سيرفر | مشكلة في الباك إند |
المصادقة (Authentication)
أشهر الطرق المستخدمة:
- API Keys: مفتاح ثابت يُرسل مع كل طلب. بسيط لكن أقل أماناً
- JWT (JSON Web Tokens): رمز مشفّر يحتوي بيانات المستخدم. الأكثر استخداماً في تطبيقات الويب
- OAuth 2.0: معيار للتفويض، يُستخدم لربط تطبيقات طرف ثالث
- Laravel Sanctum: مصادقة بسيطة لتطبيقات SPA والموبايل
بناء API بسيط مع Laravel
Laravel يوفر أدوات قوية لبناء APIs:
1. تعريف المسارات
ملف routes/api.php يحتوي كل مسارات الـ API. Laravel يضيف تلقائياً بادئة /api/ ويطبق middleware خاص.
2. إنشاء Controller
Artisan يولّد Controller جاهز بكل العمليات الأساسية (CRUD) بأمر واحد.
3. تحويل البيانات (Resources)
API Resources تتحكم في شكل البيانات المُرسلة. تخفي الحقول الحساسة وتنسّق المخرجات.
4. التحقق من البيانات (Validation)
Form Requests تتحقق من البيانات الواردة قبل معالجتها. ترفض البيانات غير الصحيحة مع رسائل خطأ واضحة.
أمان الـ API
الحماية الأساسية
- HTTPS دائماً: كل الاتصالات مشفرة، بدون استثناء
- Rate Limiting: حدد عدد الطلبات (مثلاً: 60 طلب/دقيقة)
- التحقق من المدخلات: لا تثق بأي بيانات من العميل
- إخفاء التفاصيل: رسائل الخطأ لا تكشف بنية النظام
- CORS: حدد النطاقات المسموح لها بالوصول
حماية متقدمة
- تشفير البيانات الحساسة في الطلبات والردود
- تسجيل كل الطلبات للمراجعة
- مفاتيح API بصلاحيات محددة
- IP Whitelisting للتطبيقات الحساسة
اختبار الـ API
أدوات أساسية لاختبار الـ APIs:
| الأداة | النوع | الاستخدام |
|---|---|---|
| Postman | واجهة رسومية | اختبار يدوي شامل |
| Insomnia | واجهة رسومية | بديل خفيف لـ Postman |
| cURL | سطر أوامر | اختبارات سريعة |
| PHPUnit | كود | اختبارات آلية |
| Swagger/OpenAPI | توثيق | توثيق تفاعلي |
توثيق الـ API
API بدون توثيق = API لا أحد يستخدمه. التوثيق الجيد يشمل:
- كل المسارات مع الطرق المدعومة
- المعاملات المطلوبة والاختيارية
- أمثلة للطلبات والردود
- رموز الخطأ ومعانيها
- أمثلة كود بعدة لغات
البنية التحتية للـ API
أداء الـ API يعتمد بشكل مباشر على السيرفر. خادم سحابي من كلاود (cloud.net.sa) في الرياض يعطي زمن استجابة زمن استجابة منخفض جداً للتطبيقات المحلية — وهذا فرق كبير عندما يكون تطبيقك يرسل عشرات الطلبات في الثانية.
الخلاصة
بناء API جيد يحتاج: تصميم واضح، أمان محكم، توثيق شامل، واختبارات كافية. ابدأ بـ REST لأنه الأبسط والأكثر دعماً، ثم انتقل لـ GraphQL أو gRPC حسب احتياجات مشروعك.
ابدأ الآن
جاهز تبني مشروعك؟ اختر خادمك السحابي بالمواصفات اللي يحتاجها تطبيقك، أو راجع الباقات والأسعار.
