La documentation de l'API Discourse mentionne un "corps de requête" pour une requête GET

GET inclut toujours une chaîne de requête et ne contient jamais de données POST (c’est pourquoi vous obtenez une erreur 413 « payload trop volumineux », car la méthode n’attend aucune donnée). Lorsque vous interrogez des données sur un serveur sans effectuer de modification, vous utiliserez (presque) toujours GET et non POST. Vous devriez donc utiliser params= au lieu de data=.

Je pense que la documentation de cet appel API spécifique est mal formulée (« Request Body schema » indique clairement une requête POST avec data), je transfère donc ce signalement vers Contribute > Bug et vous n’avez pas besoin de me payer.

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>\n<h2>\n<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...