La API de Topic obtiene publicaciones incorrectas: constantemente se equivoca en 5

/t/slug/123.json?post_number=10 obtiene la 5ª publicación. /t/slug/123.json?post_number=50 obtiene la 45ª publicación, etc. Está consistentemente desfasado en 5. Si quieres obtener todas las publicaciones, tienes que usar paginación, y a menos que tengas en cuenta esto, tendrás una lista incorrecta.

Solo puedo suponer que esto se hizo para incluir algunas publicaciones anteriores para contexto. Si ese es el caso, en mi humilde opinión, eso debería hacerse en la interfaz de usuario, no en la API.

Este endpoint promete devolver información incluyendo la publicación especificada, por ejemplo:

○ → 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

Como aplicación de página única, Discourse utiliza su API de manera eficiente para minimizar el trabajo. No es razonable hacer una llamada a la API por publicación; eso aumentaría masivamente la cantidad de idas y venidas entre el cliente y el servidor.

Es trivial seleccionar la publicación que esperas del resultado. Lo mismo que arriba, obteniendo solo el contenido cocinado de la publicación 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>Hola Tiago,</p>
<p>¿Puedes aclararlo un poco? Algunas capturas de pantalla, tu código real y dónde aparece tu anuncio serían de gran ayuda. Gracias <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>

O, si realmente quieres devolver información sobre solo la publicación única que estás consultando, eres libre de hacer una consulta de Data Explorer que solo haga eso.

1 me gusta

ok, pero ¿dónde está documentado eso?

No estoy en contra de la paginación.

Aquí puedes ver la documentación de la API: https://docs.discourse.org/#tag/Topics/operation/getSpecificPostsFromTopic

1 me gusta