0Pricing
Python Academy · درس

إنشاء نقطة نهاية REST

أعد استجابات JSON

إنشاء نقطة نهاية REST درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.

ما هي REST API؟

تتيح REST API الوصول إلى الموارد عبر HTTP باستخدام الأفعال القياسية. وبدلًا من صفحات HTML، تُرجع بيانات، عادةً بتنسيق JSON، لتستخدمها البرامج الأخرى.

from flask import Flask, jsonify
app = Flask(__name__)
# REST endpoints return data, not pages
print('REST APIs speak JSON over HTTP')

إرجاع JSON

تحوّل jsonify() قاموس Python أو قائمة إلى استجابة JSON مع نوع المحتوى الصحيح.

from flask import Flask, jsonify
app = Flask(__name__)

@app.route('/api/status')
def status():
    return jsonify({'status': 'ok'})
print('jsonify builds a JSON response')

التحويل التلقائي للقواميس

يحوّل Flask الحديث أيضًا القاموس المُرجع إلى JSON تلقائيًا، ولذلك يمكنك غالبًا الاستغناء عن jsonify().

from flask import Flask
app = Flask(__name__)

@app.route('/api/ping')
def ping():
    return {'message': 'pong'}
print('Returning a dict yields JSON')

إرجاع قائمة

لإرجاع مجموعة، مرّر قائمة إلى jsonify(). ويكون كل عنصر عادةً قاموسًا يمثل موردًا واحدًا.

from flask import Flask, jsonify
app = Flask(__name__)
books = [{'id': 1, 'title': 'A'}, {'id': 2, 'title': 'B'}]

@app.route('/api/books')
def list_books():
    return jsonify(books)
print('Return a list of resources')

GET لمورد واحد

استخدم جزءًا ديناميكيًا من عنوان URL لجلب عنصر واحد باستخدام معرّفه. وأرجع 404 إذا لم يكن موجودًا.

from flask import Flask, jsonify
app = Flask(__name__)
books = {1: {'id': 1, 'title': 'A'}}

@app.route('/api/books/<int:bid>')
def get_book(bid):
    book = books.get(bid)
    if book is None:
        return jsonify({'error': 'not found'}), 404
    return jsonify(book)
print('GET /api/books/1')

الإنشاء باستخدام POST

ينشئ طلب POST موردًا. اقرأ جسم JSON، وأنشئ العنصر الجديد، ثم أعده مع الحالة 201 تم الإنشاء.

from flask import Flask, request, jsonify
app = Flask(__name__)
books = []

@app.route('/api/books', methods=['POST'])
def create_book():
    data = request.get_json()
    book = {'id': len(books) + 1, 'title': data['title']}
    books.append(book)
    return jsonify(book), 201
print('POST creates and returns 201')

التحديث باستخدام PUT

يستبدل PUT موردًا موجودًا أو يحدّثه، ويكون المورد محددًا باستخدام معرّفه.

from flask import Flask, request, jsonify
app = Flask(__name__)
books = {1: {'id': 1, 'title': 'A'}}

@app.route('/api/books/<int:bid>', methods=['PUT'])
def update_book(bid):
    if bid not in books:
        return jsonify({'error': 'not found'}), 404
    books[bid]['title'] = request.get_json()['title']
    return jsonify(books[bid])
print('PUT updates a resource')

الحذف باستخدام DELETE

يحذف DELETE موردًا. ومن الشائع إرجاع الحالة 204 بلا محتوى عند نجاح العملية.

from flask import Flask, jsonify
app = Flask(__name__)
books = {1: {'id': 1, 'title': 'A'}}

@app.route('/api/books/<int:bid>', methods=['DELETE'])
def delete_book(bid):
    if bid in books:
        del books[bid]
        return '', 204
    return jsonify({'error': 'not found'}), 404
print('DELETE removes a resource')

أهمية رموز الحالة

تعتمد REST على رموز حالة HTTP: 200 موافق، 201 تم الإنشاء، 204 بلا محتوى، 400 طلب غير صالح، 404 لم يتم العثور عليه.

# 200 success
# 201 created
# 204 no content
# 400 bad request
# 404 not found
print('Use the right status code')

التحقق من الجسم

تحقّق من وجود الحقول المطلوبة قبل الإنشاء. وأرجع 400 مع رسالة خطأ عندما يكون الجسم غير صالح.

from flask import Flask, request, jsonify
app = Flask(__name__)

@app.route('/api/books', methods=['POST'])
def create_book():
    data = request.get_json(silent=True) or {}
    if 'title' not in data:
        return jsonify({'error': 'title required'}), 400
    return jsonify(data), 201
print('Validate JSON before using it')

استجابات متسقة

تُرجع واجهات API الجيدة بنيةً متوقعة، وغالبًا ما تضع البيانات والأخطاء في غلاف بالطريقة نفسها في كل مرة، حتى تتمكن العملاء من الاعتماد عليها.

from flask import jsonify
# Success: {'data': {...}}
# Error:   {'error': 'message'}
# Keep the shape consistent across endpoints
print('Predictable shapes help clients')

اختبار سريع

اختبر معرفتك بـ REST.

مراجعة

أنشأت نقطة نهاية REST بتنسيق JSON.

  • ينتج jsonify()، أو القاموس المُرجع، استجابات JSON
  • اربط أفعال HTTP بوظائفها: يقرأ GET، وينشئ POST، ويحدّث PUT، ويحذف DELETE
  • أرجع رموز حالة معبّرة مثل 201 و204 و400 و404
  • تحقّق من جسم الطلب وحافظ على اتساق الاستجابات

الأسئلة الشائعة

هل درس «إنشاء نقطة نهاية REST» مجاني؟

نعم — نص درس «إنشاء نقطة نهاية REST» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.

ماذا ستتعلم في «إنشاء نقطة نهاية REST»؟

أعد استجابات JSON تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟

لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «إنشاء نقطة نهاية REST»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟

نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. المسارات وواجهات العرض
  2. القوالب باستخدام Jinja2
  3. النماذج وبيانات الطلب
  4. إنشاء نقطة نهاية REST
← العودة إلى Python Academy