L'API Topic donne les mauvaises publications - toujours décalée de 5

/t/slug/123.json?post_number=10 récupère le 5ème message. /t/slug/123.json?post_number=50 récupère le 45ème message, etc. Il y a une décalage constant de 5. Si vous souhaitez obtenir tous les messages, vous devez utiliser la pagination, et à moins d’en tenir compte, vous aurez une liste incorrecte.

Je ne peux que supposer que cela a été fait pour inclure quelques messages précédents pour le contexte. Si c’est le cas, à mon avis, cela devrait être fait dans l’interface utilisateur, pas dans l’API.

Ce point de terminaison promet de renvoyer des informations y compris le message spécifié, par exemple :

○ → curl -s 'https://meta.discourse.org/t/fkb-pro-social-theme/234323.json?post_number=40' | jq .post_stream.posts[].post_number
33
34
35
36
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

En tant qu’application monopage, Discourse utilise son API efficacement pour minimiser le travail. Il n’est pas raisonnable de faire un appel API par message ; cela augmenterait considérablement la quantité d’allers-retours entre le client et le serveur.

Il est trivial de sélectionner le message attendu dans le résultat. Comme ci-dessus, pour obtenir uniquement le contenu cuit du message 40 :

○ → curl -s 'https://meta.discourse.org/t/fkb-pro-social-theme/234323.json?post_number=40' | jq -r '.post_stream.posts[] | select(.post_number == 40) | .cooked'

<p>Hi Tiago,</p>
<p>Can you please clarify it a little bit? Some screenshots, your actual code and where is your advert appear would be very helpful. Thank you <img src="https://emoji.discourse-cdn.com/twitter/slightly_smiling_face.png?v=12" title=":slightly_smiling_face:" class="emoji" alt=":slightly_smiling_face:" loading="lazy" width="20" height="20"></p>

Ou, si vous voulez absolument renvoyer des informations sur un seul message que vous interrogez, vous êtes libre de faire une requête Data Explorer qui ne fait que cela.

1 « J'aime »

ok, mais où est-ce documenté ?

Je ne suis pas contre la pagination.

Vous pouvez consulter la documentation de l’API ici : https://docs.discourse.org/#tag/Topics/operation/getSpecificPostsFromTopic

1 « J'aime »