ما هي واجهات برمجة التطبيقات (APIs)؟
واجهات برمجة التطبيقات (Application Programming Interfaces) هي الجسر الذي يربط بين تطبيقات مختلفة، مما يسمح لها بالتواصل وتبادل البيانات. RESTful APIs هي النوع الأكثر شيوعاً والأسهل في الفهم والاستخدام.
لماذا تحتاج APIs؟
🔗 ربط التطبيقات
ربط تطبيقك مع خدمات خارجية مثل الدفع، الخرائط، أو وسائل التواصل
📱 تطبيقات الجوال
تطبيقات الجوال تحتاج API للحصول على البيانات من الخادم
🌐 مواقع الويب
جعل موقعك تفاعلياً من خلال جلب البيانات ديناميكياً
🤖 التكامل
ربط أنظمة مختلفة في شركتك أو مع شركاء خارجيين
مبادئ REST:
📊 Stateless
كل طلب يجب أن يحتوي على جميع المعلومات اللازمة
🔗 Uniform Interface
واجهة موحدة وثابتة لجميع العمليات
📚 Resource-Based
البيانات تُعامل كموارد (Resources) يمكن الوصول إليها
🌐 Client-Server
فصل واضح بين العميل والخادم
أنواع طلبات HTTP:
GET
جلب البيانات (قراءة)
GET /api/users
POST
إنشاء بيانات جديدة
POST /api/users
PUT
تحديث بيانات موجودة (كاملة)
PUT /api/users/123
PATCH
تحديث جزئي للبيانات
PATCH /api/users/123
DELETE
حذف البيانات
DELETE /api/users/123
بناء API بسيط مع Node.js و Express:
1. إعداد المشروع
npm init -y
npm install express mongoose cors
npm install -D nodemon
2. إنشاء الخادم الأساسي
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());
app.use(express.json());
app.listen(3000, () => {
console.log('الخادم يعمل على المنفذ 3000');
});
3. نموذج البيانات
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
name: String,
email: String,
age: Number
});
const User = mongoose.model('User', userSchema);
4. مسارات API
// جلب جميع المستخدمين
app.get('/api/users', async (req, res) => {
try {
const users = await User.find();
res.json(users);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// إنشاء مستخدم جديد
app.post('/api/users', async (req, res) => {
try {
const user = new User(req.body);
await user.save();
res.status(201).json(user);
} catch (error) {
res.status(400).json({ error: error.message });
}
});
// جلب مستخدم محدد
app.get('/api/users/:id', async (req, res) => {
try {
const user = await User.findById(req.params.id);
if (!user) return res.status(404).json({ error: 'المستخدم غير موجود' });
res.json(user);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
أفضل الممارسات لبناء APIs:
📝 تسمية واضحة
- استخدم أسماء وصفية للمسارات
- استخدم HTTP methods بشكل صحيح
- تجنب الأفعال في أسماء المسارات
🔒 الأمان
- استخدم HTTPS دائماً
- طبق المصادقة (Authentication)
- تحقق من صحة البيانات
- حدد معدل الطلبات (Rate Limiting)
📊 الاستجابة
- استخدم رموز الحالة الصحيحة
- أرسل رسائل خطأ واضحة
- استخدم Pagination للبيانات الكبيرة
- أضف معلومات مفيدة في Headers
أدوات مفيدة لاختبار APIs:
- Postman - أداة شاملة لاختبار APIs
- Insomnia - بديل سهل لـ Postman
- curl - أداة سطر الأوامر
- Thunder Client - إضافة VS Code
مثال على استخدام API من العميل:
// جلب البيانات
fetch('/api/users')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('خطأ:', error));
// إرسال بيانات جديدة
fetch('/api/users', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'أحمد محمد',
email: '[email protected]',
age: 25
})
})
.then(response => response.json())
.then(data => console.log('تم إنشاء المستخدم:', data));
APIs هي أساس التطبيقات الحديثة. ابدأ ببناء أول API لك اليوم!
تعلم بناء APIs معنا