@pedroleaoc إليك عينة صغيرة من سكريبت بايثون توضح كيفية إجراء طلبات مصادقة وكيفية إرسال بيانات الطلب لطلبات PUT/POST.
# discourse-api-demo.py
import requests
from requests.structures import CaseInsensitiveDict
# طلب GET أساسي إلى عنوان URL عام، لا حاجة لرؤوس.
url = "http://localhost:3000/posts/10.json"
resp = requests.get(url)
print(resp.status_code)
print(resp.content)
# طلب GET إلى نقطة نهاية خاصة. هناك حاجة لرؤوس المصادقة.
url = "http://localhost:3000/admin/users/list/active.json"
headers = {'Api-Username': 'system', 'Api-Key': '5c1c57915e2...'}
resp = requests.get(url, headers=headers)
print(resp.status_code)
print(resp.content)
# طلب PUT مع جسم طلب
url = "http://localhost:3000/posts/10.json"
data = { 'raw': "منشور رائع، لكن إليك تحديثًا لجسم المنشور", 'edit_reason': "قمت بتغيير هذا لأنني أستطيع." }
resp = requests.put(url, headers=headers, json=data)
print(resp.status_code)
print(resp.content)
من Quickstart — Requests 2.33.1 documentation
بدلاً من ترميز الـ
dictبنفسك، يمكنك أيضًا تمريره مباشرة باستخدام المعلمةjson(تمت إضافتها في الإصدار 2.4.2) وسيتم ترميزه تلقائيًا:
url = 'https://api.github.com/some/endpoint' >>> payload = {'some': 'data'} >>> r = requests.post(url, json=payload)ملاحظة: يتم تجاهل المعلمة
jsonإذا تم تمريرdataأوfiles.سيؤدي استخدام المعلمة
jsonفي الطلب إلى تغييرContent-Typeفي الرأس إلىapplication/json.