بناء واجهة برمجة تطبيقات (API) باستخدام Flask في Python
تمت الكتابة بواسطة: عبد الحكيم
تارخ آخر تحديث: 10 سبتمبر 2024محتوى المقال
- ما هو Flask؟
- إعداد البيئة وتثبيت Flask
- إنشاء أول API باستخدام Flask
- إضافة مسارات أخرى إلى API
- اختبار الـ API
- الخلاصة
أصبحت واجهات برمجة التطبيقات (APIs) جزءًا أساسيًا من تطوير البرمجيات الحديثة، حيث تتيح للمطورين بناء تطبيقات قابلة للتوسع والتكامل بسهولة. في هذا المقال، سنتعلم كيفية بناء واجهة برمجة تطبيقات (API) باستخدام إطار العمل Flask في Python. سنبدأ من إعداد البيئة وتثبيت Flask، ثم سنتناول كيفية إنشاء المسارات، التعامل مع الطلبات، وإرجاع الاستجابات.
ما هو Flask؟
Flask هو إطار عمل ويب صغير ومرن مكتوب بلغة Python. يُستخدم بشكل شائع لبناء تطبيقات الويب وواجهات برمجة التطبيقات (APIs) بسبب سهولة استخدامه ومرونته. يتميز Flask ببساطته وقدرته على التوسع بفضل مجموعة كبيرة من الإضافات (extensions) المتاحة.
لماذا نستخدم Flask لبناء API؟
- سهولة الإعداد والتعلم، مما يجعله مناسبًا للمبتدئين والمحترفين على حد سواء.
- مرونة عالية في بناء التطبيقات الصغيرة والكبيرة.
- مجتمع دعم كبير ومجموعة واسعة من الإضافات لتعزيز الوظائف.
إعداد البيئة وتثبيت Flask
قبل البدء في بناء الـ API، نحتاج إلى إعداد البيئة وتثبيت Flask. يُفضل استخدام بيئة افتراضية لعزل الحزم المطلوبة للمشروع.
إنشاء بيئة افتراضية
$ python -m venv venv
$ source venv/bin/activate # على نظام Windows: venv\Scripts\activate
تثبيت Flask
$ pip install Flask
إنشاء أول API باستخدام Flask
لنبدأ بإنشاء ملف Python جديد يُسمى app.py
. سنقوم بإنشاء API بسيطة تستجيب لطلب HTTP GET.
from flask import Flask, jsonify
app = Flask(__name__)
# مسار الجذر للـ API
@app.route('/', methods=['GET'])
def home():
return jsonify({'message': 'مرحبًا بكم في API باستخدام Flask!'})
# تشغيل التطبيق
if __name__ == "__main__":
app.run(debug=True)
في هذا المثال، قمنا بإنشاء API بسيطة تستجيب لطلب GET على مسار الجذر /
وترسل استجابة JSON تحتوي على رسالة ترحيبية. لتشغيل التطبيق، قم بتشغيل الأمر التالي في الطرفية:
$ python app.py
إضافة مسارات أخرى إلى API
لجعل الـ API أكثر فائدة، سنضيف مسارات إضافية للتعامل مع أنواع أخرى من الطلبات مثل POST، PUT، و DELETE. في المثال التالي، سنقوم بإنشاء واجهة بسيطة لإدارة قائمة مهام (TODO list).
إعداد البيانات الأولية
سنبدأ بإعداد قائمة أولية من المهام في شكل قائمة من القواميس:
todos = [
{'id': 1, 'task': 'تعلم Flask'},
{'id': 2, 'task': 'بناء API'},
{'id': 3, 'task': 'كتابة توثيق'}
]
إنشاء مسار GET لعرض قائمة المهام
يمكننا الآن إضافة مسار لعرض قائمة المهام:
@app.route('/todos', methods=['GET'])
def get_todos():
return jsonify(todos)
عند زيارة المسار /todos
، ستعرض الـ API قائمة المهام كاستجابة JSON.
إضافة مهمة جديدة باستخدام POST
لإضافة مهمة جديدة، سنستخدم مسار POST. سنحتاج إلى قراءة البيانات المرسلة في جسم الطلب:
from flask import request
@app.route('/todos', methods=['POST'])
def add_todo():
new_todo = {
'id': len(todos) + 1,
'task': request.json['task']
}
todos.append(new_todo)
return jsonify(new_todo), 201
هنا، نقوم بإنشاء مسار POST لإضافة مهمة جديدة إلى قائمة المهام. نقوم بقراءة البيانات من جسم الطلب باستخدام request.json
، ثم نضيفها إلى قائمة المهام.
تحديث مهمة موجودة باستخدام PUT
يمكننا أيضًا إضافة مسار لتحديث مهمة موجودة باستخدام PUT:
@app.route('/todos/' , methods=['PUT'])
def update_todo(todo_id):
for todo in todos:
if todo['id'] == todo_id:
todo['task'] = request.json['task']
return jsonify(todo)
return jsonify({'error': 'Task not found'}), 404
في هذا المثال، نقوم بتحديث مهمة بناءً على معرفها id
في القائمة. إذا وُجدت المهمة، نقوم بتحديثها وإرجاعها. إذا لم تُوجد، نعيد استجابة خطأ 404.
حذف مهمة باستخدام DELETE
أخيرًا، نضيف مسارًا لحذف مهمة باستخدام DELETE:
@app.route('/todos/' , methods=['DELETE'])
def delete_todo(todo_id):
global todos
todos = [todo for todo in todos if todo['id'] != todo_id]
return jsonify({'message': 'Task deleted'})
هنا، نقوم بحذف مهمة بناءً على معرفها id
من القائمة وإرجاع رسالة تأكيد.
اختبار الـ API
يمكنك اختبار API باستخدام أدوات مثل Postman أو cURL. يمكن استخدام curl
لإرسال طلبات HTTP إلى API والتحقق من الاستجابات.
# اختبار GET
$ curl http://127.0.0.1:5000/todos
# اختبار POST
$ curl -X POST http://127.0.0.1:5000/todos -H "Content-Type: application/json" -d '{"task": "تعلم API"}'
# اختبار PUT
$ curl -X PUT http://127.0.0.1:5000/todos/1 -H "Content-Type: application/json" -d '{"task": "مراجعة Flask"}'
# اختبار DELETE
$ curl -X DELETE http://127.0.0.1:5000/todos/1
الخلاصة
بناء واجهة برمجة تطبيقات باستخدام Flask في Python هو عملية بسيطة وفعالة. يمكنك بسهولة إنشاء مسارات للتعامل مع الطلبات المختلفة، معالجة البيانات، وإرجاع الاستجابات المناسبة. Flask هو إطار عمل قوي يتيح لك تطوير تطبيقات ويب وواجهات برمجة تطبيقات بسرعة وكفاءة، مما يجعله خيارًا ممتازًا لكل من المشاريع الصغيرة والكبيرة.
طور مهاراتك: مقالات يجب قراءتها في البرمجة
- كيفية استخدام مكتبة NumPy لإجراء العمليات الحسابية في Python
- كيفية تشغيل واستعمال بيئات العمل الافتراضية في Python
- كيفية إنشاء بوت تلقائي لمواقع التواصل الاجتماعي باستخدام Python
- كيفية التعامل مع تواريخ وأوقات باستخدام مكتبة datetime في Python
- استخدام مكتبة PyTorch لتعلم الآلة في Python
- كيفية قراءة ومعالجة الصور باستخدام مكتبة OpenCV في Python
- كيفية إجراء الاختبارات الوحدوية في Python باستخدام unittest
- بناء تطبيق ويب بسيط باستخدام Django في Python
- كيفية استخدام مكتبة Seaborn لإنشاء مخططات متقدمة في Python
- كيفية إرسال رسائل بريد إلكتروني باستخدام Python