بناء API خاص بك باستخدام FastAPI أو Express.js
يا هلا والله! اليوم بنتكلم عن كيف تبني API خاص فيك، سواء كنت تحب بايثون ولا جافاسكريبت. بنشوف FastAPI و Express.js، كل واحد له مميزاته، وأنت تختار اللي يريحك.
ليش نحتاج API أصلاً؟
الـ API (Application Programming Interface) هو زي النادل اللي ياخذ طلباتك من المطبخ (قاعدة البيانات أو خدمة ثانية) ويرجع لك الأكل. يخلي تطبيقات مختلفة تتكلم مع بعضها. يعني تطبيق جوالك يتكلم مع السيرفر، أو موقعك يتكلم مع خدمة دفع.
ملاحظة: الـ API هو العمود الفقري لأغلب التطبيقات الحديثة. فهمه وإتقانه بيفتح لك أبواب كثيرة في عالم البرمجة.
الخيار الأول: FastAPI (بايثون)
FastAPI فريم وورك بايثوني رهيب وسريع جداً عشان تبني APIs. مبني على Starlette و Pydantic، ويعطيك أداء ممتاز مع ميزات كثيرة جاهزة.
المتطلبات
- بايثون 3.7+
- مدير الحزم
pip
التثبيت
أول شي لازم تثبت FastAPI و Uvicorn (سيرفر الويب اللي بيشغل تطبيقك):
pip install fastapi "uvicorn[standard]"
مثال بسيط: أول API لك
نسوي ملف اسمه main.py ونحط فيه الكود هذا:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "يا هلا والله فيك من FastAPI!"}
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
تشغيل التطبيق
افتح الطرفية (Terminal) في نفس مجلد الملف وشغل الأمر هذا:
uvicorn main:app --reload
الحين تقدر تروح على http://127.0.0.1:8000 أو http://127.0.0.1:8000/items/5?q=hello في المتصفح وتشوف الرد. والأحلى من كذا، FastAPI يسوي لك وثائق API تلقائية على http://127.0.0.1:8000/docs أو http://127.0.0.1:8000/redoc.
نصيحة: ميزة الوثائق التلقائية في FastAPI توفر عليك وقت وجهد كبير في توثيق الـ API حقك. استغلها!
الخيار الثاني: Express.js (جافاسكريبت/Node.js)
Express.js هو الفريم وورك الأكثر شعبية لـ Node.js عشان تبني تطبيقات ويب و APIs. بسيط ومرن، ويعطيك تحكم كامل في كل شي.
المتطلبات
- Node.js (معاه
npm)
التثبيت
أول شي سو مجلد جديد لمشروعك، وادخل عليه، بعدين ابدأ مشروع Node.js جديد وثبت Express:
mkdir my-express-api
cd my-express-api
npm init -y
npm install express
مثال بسيط: أول API لك
نسوي ملف اسمه app.js ونحط فيه الكود هذا:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('يا هلا والله فيك من Express.js!');
});
app.get('/items/:id', (req, res) => {
const itemId = req.params.id;
const queryParam = req.query.q;
res.json({ item_id: itemId, q: queryParam });
});
app.listen(port, () => {
console.log(<code dir="ltr" style="background:#f3f4f6; color:#0056b3; padding:2px 6px; border-radius:4px; font-family:monospace; direction:ltr !important; display:inline-block;">سيرفر Express شغال على http://localhost:${port}</code>);
});
تشغيل التطبيق
افتح الطرفية (Terminal) في نفس مجلد الملف وشغل الأمر هذا:
node app.js
الحين تقدر تروح على http://localhost:3000 أو http://localhost:3000/items/10?q=test في المتصفح.
نصيحة: لـ Express.js، تقدر تستخدم أدوات زي
nodemonعشان يعيد تشغيل السيرفر تلقائياً كل ما عدلت على الكود. ثبته بـnpm install -g nodemonوشغل بـnodemon app.js.
طيب، أختار مين؟
- FastAPI:
- إذا كنت تحب بايثون وتبي أداء عالي.
- تحتاج توثيق API تلقائي وميزات validation قوية (بفضل Pydantic).
- مشروعك بيصير كبير ومعقد شوي، تبغى شي يساعدك تنظم الكود.
- Express.js:
- إذا كنت تحب جافاسكريبت أو تشتغل على مشاريع Full-Stack مع Node.js.
- تفضل المرونة والتحكم الكامل، ما تبي فريم وورك يفرض عليك طريقة معينة.
- تبني API بسيط أو متوسط، أو مشروع يحتاج الكثير من الـ middlewares.
خاتمة
سواء اخترت FastAPI أو Express.js، أنت الحين عندك الأساس عشان تبني API خاص فيك. ابدأ بتجربة الأمثلة، بعدين حاول تبني API بسيط لمشروع صغير عندك. بالتوفيق يا بطل!