Comment interroger l'API topics_with_no_response.json avec des filtres

Je sais que pour chaque rapport d’administrateur, il existe une API .json pour récupérer les données. Le rapport qui m’intéresse est topics_with_no_response et j’ai pu filtrer par catégorie via https://xxx.com/admin/reports/topics_with_no_response?end_date=2023-06-16&filters=%7B%22category%22%3A7%2C%22include_subcategories%22%3Atrue%7D&mode=table&start_date=2023-06-14. Cependant, si je passe au point de terminaison json via https://xxx.com/admin/reports/topics_with_no_response.json?end_date=2023-06-16&filters=%7B%22category%22%3A7%2C%22include_subcategories%22%3Atrue%7D&mode=table&start_date=2023-06-14, il ne renvoie pas les données.

Avons-nous une syntaxe différente pour interroger ces deux points de terminaison ?

Vous devez utiliser POST au lieu de GET pour une raison étrange.

Salut @RGJ,

Pourriez-vous me donner un exemple de la requête POST ? Quel devrait être le corps ? J’ai essayé de simplement changer GET en POST avec la même URL, mais cela ne semble pas fonctionner.

Vous devrez évidemment passer les paramètres de requête (c’est-à-dire tout ce qui suit le ?) comme données POST.

Voir aussi Run Data Explorer queries with the Discourse API

Lorsque je suis passé à POST et que j’ai transmis tous les paramètres de requête comme données POST, j’ai obtenu un message « Page introuvable ». Cependant, j’ai pu utiliser POST pour exécuter des requêtes d’explorateur de données. Avez-vous des idées ? Merci !

Jetez un coup d’œil à Ingénierie inverse de l’API Discourse. Lorsque j’essaie cette approche pour le rapport « Sujets sans réponse », je vois qu’il effectue des requêtes GET similaires à :

http://forum.example.com/admin/reports/bulk?reports%5Btopics_with_no_response%5D%5Bfacets%5D%5B%5D=prev_period&reports%5Btopics_with_no_response%5D%5Bstart_date%5D=2022-02-01&reports%5Btopics_with_no_response%5D%5Bend_date%5D=2023-06-17&reports%5Btopics_with_no_response%5D%5Blimit%5D=50

Vous pouvez obtenir les paramètres de requête encodés dans l’onglet Réseau de l’inspecteur de votre navigateur. Avec cette URL, vous devriez pouvoir faire quelque chose comme :

curl -X GET "http://localhost:4200/admin/reports/bulk.json?reports%5Btopics_with_no_response%5D%5Bfacets%5D%5B%5D=prev_period&reports%5Btopics_with_no_response%5D%5Bstart_date%5D=2022-05-16&reports%5Btopics_with_no_response%5D%5Bend_date%5D=2022-09-10&reports%5Btopics_with_no_response%5D%5Blimit%5D=50" \
-H "Api-Key: $api_key" \
-H "Api-Username: system"

Vous devrez définir api_key sur une clé API globale pour tous les utilisateurs - je ne pense pas qu’il existe de portée spécifique qui puisse être utilisée pour les rapports.

Notez que vous devez ajouter l’extension json à l’URL (http://localhost:4200/admin/reports/bulk.json)

1 « J'aime »

Merci @simon, ça marche !!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.