GET يحتوي دائمًا على سلسلة استعلام ولا يحتوي أبدًا على بيانات POST (لهذا السبب تحصل على خطأ 413 Payload Too Large، فهو لا يتوقع أي شيء). عند الاستعلام عن بيانات من خادم دون إجراء تغيير، ستستخدم دائمًا (تقريبًا) GET وليس POST. لذلك يجب عليك استخدام params= بدلاً من data=.
أعتقد أن وثائق استدعاء API المحدد هذا مصاغة بشكل سيء (“مخطط جسم الطلب” يشير حقًا إلى POST data) لذلك أقوم بنقل هذا إلى Bug ولا تحتاج إلى دفع أي شيء لي.
import requests
import json
def get_post_from_topic(topic_id, post_id):
endpoint = f"https://forum.example.com/t/{topic_id}/posts.json"
api_username = 'system'
api_key = 'REDACTED'
headers = {
"Content-Type": "application/json",
"Api-Key": api_key,
"Api-Username": api_username,
}
params = {
"post_ids[]": post_id
}
response = requests.get(endpoint, headers=headers, params = params)
if response.status_code == 200:
return response
response = get_post_from_topic(6,8)
print(response.json())
{"post_stream": {"posts": [{"id": 8, "name": "system", "username": "system", "avatar_template": "/images/discourse-logo-sketch-small.png", "created_at": "2022-06-26T04:44:23.637Z", "cooked": "<p><a name=\"collect\"></a></p><h2><a name=\"what-information-do-we-collectcollect-1\" class=\"anchor\" href=\"#what-information-do-we-collectcollect-1\"></a><a href=\"#collect\">What information do we collect...