ما هو الـ `content-type` الصحيح عند تعديل المشاركات؟

@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.