دليل كامل: افهم كل شيء عن واجهات برمجة التطبيقات مع أمثلة
١٠ مارس ٢٠٢٣

قد تكون سمعت مصطلح API من قبل. لكن ما المقصود به بالضبط، ولماذا هو مهم؟
ببساطة، API (واجهة برمجة التطبيقات) هي طريقة لتحدث برامج الكمبيوتر المختلفة مع بعضها البعض. فكر فيها مثل رمز سري يمكن لبرنامج استخدامه لطلب معلومات من برنامج آخر أو طلب منه القيام بشيء ما.
العقلية عند بناء API
واجهات برمجة التطبيقات توفر الوقت، وتشجع التعاون، وتُطلق الابتكار. على سبيل المثال، قد يستخدم المطور طقس API ويجمعه مع بيانات حركة المرور لإنشاء تطبيق ملاحة أكثر ذكاءً.

ما هي أنواع واجهات برمجة التطبيقات المختلفة؟
- SOAP واجهات برمجة التطبيقات: قائم على XML، منظم، صارم.
- XML-RPC واجهات برمجة التطبيقات: أسلوب RPC مع حمولات XML.
- REST واجهات برمجة التطبيقات: خفيف، عديم الحالة، يستخدم طرق HTTP.
- JSON-RPC واجهات برمجة التطبيقات: RPC مع حمولات JSON.
- GraphQL واجهات برمجة التطبيقات: قائم على الاستعلامات، فعّال، حديث.
- OpenAPI/Swagger: عقود API قابلة للقراءة آليًا.

يتم تصنيف واجهات برمجة التطبيقات أيضًا كعامة أو شريك أو داخلية أو مركبة أو B2B.
فهم XML مقابل JSON

- XML: مطول، قائم على العلامات، منظم.
- JSON: خفيف، ودود للإنسان، مستخدم على نطاق واسع.
فك REST واجهات برمجة التطبيقات
REST واجهات برمجة التطبيقات عديم الحالة وتستخدم أفعال HTTP مثل GET، POST، PUT، و DELETE.

مثال على الطلب:
GET https://API.weather.com/forecast?zip=90210&appid=YOUR_API_KEY
الاستجابة:
{
"location": "90210",
"forecast": "Sunny, 25°C"
}
عمليات CRUD مع REST
استرجاع البيانات (GET):
fetch("https://API.example.com/data")
.then(res => res.json())
.then(console.log);
إنشاء البيانات (POST):
import requests
response = requests.post("https://API.example.com/data", json={"name": "John"})
print(response.json())
تحديث البيانات (PUT):
fetch("https://API.example.com/data/123", {
method: "PUT",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ age: 26 })
})
حذف البيانات (DELETE):
import requests
requests.delete("https://API.example.com/data/123")
تأمين REST API

- استخدم HTTPS
- نفّذ المصادقة/الترخيص (JWT, OAuth)
- طبّق تقييد المعدل
- التحقق من المدخلات
مثال: مصادقة JWT في Express.js
app.get("/protected", (req, res) => {
const token = req.headers["authorization"].split(" ")[1];
jwt.verify(token, "secret", (err, user) => {
if (err) return res.sendStatus(403);
res.send(`Welcome, ${user.name}`);
});
});
توثيق API

- كن واضحًا ومختصرًا
- قدم أمثلة
- وثق المعلمات والاستجابات
مثال (طقس API):
GET /weather?location=London&units=metric
الاستجابة:
{
"location": "London",
"temperature": 10,
"conditions": "Cloudy"
}
مثال كامل: بناء Flask API

from flask import Flask, jsonify, request
app = Flask(__name__)
products = [
{"id": 1, "name": "Product 1", "price": 10.0},
{"id": 2, "name": "Product 2", "price": 20.0},
]
@app.route("/products", methods=["GET"])
def get_products():
return jsonify(products)
@app.route("/products/<int:id>", methods=["GET"])
def get_product(id):
return jsonify(next((p for p in products if p["id"] == id), {"message": "Not found"}))
if __name__ == "__main__":
app.run(debug=True)
الخلاصة
واجهات برمجة التطبيقات تُمكّن التطبيقات الحديثة من التواصل بين الأنظمة.
من تسجيلات الدخول الاجتماعية إلى تطبيقات الطقس إلى واجهات برمجة التطبيقات للتجارة الإلكترونية، فهي العمود الفقري للاتصال.
فهم REST وتنسيقات البيانات وممارسات الأمان يضمن لك بناء واجهات برمجة التطبيقات واستهلاكها وتوسيعها بفعالية.