Retourner uniquement des champs spécifiques de la réponse GET de l'API

Continuant la discussion de la Documentation de l’API Discourse :

Bonjour

Je n’ai pas trouvé de réponse à cette question, s’il vous plaît. Quelqu’un sait-il s’il est possible de spécifier que la réponse de l’API Discourse à une requête GET ne retourne que le champ demandé ?

Par exemple, la requête GET pour Lister les membres d’un groupe (https://{defaultHost}/groups/{id}/members.json) renvoie :

 {
   "members": [
     {
       "id": 0,
       "username": "string",
       "name": "string",
       "avatar_template": "string",
       "title": "string",
       "last_posted_at": "string",
       "last_seen_at": "string",
       "added_at": "string",
       "timezone": "string"
     }
   ],
   "owners": [
     {
       "id": 0,
       "username": "string",
       "name": "string",
       "avatar_template": "string",
       "title": "string",
       "last_posted_at": "string",
       "last_seen_at": "string",
       "added_at": "string",
       "timezone": "string"
     }
   ],
   "meta": {
     "total": 0,
     "limit": 0,
     "offset": 0
   }
 }

Est-il possible de faire en sorte que la réponse ne retourne qu’un champ spécifique ? Par exemple, pour ne retourner que les noms d’utilisateur des membres ?

{
  "members": [
    {
       "username": "string"
    }
  ]
}

Je sais qu’il est possible de récupérer toute la réponse, puis d’utiliser du code pour filtrer le JSON et les tableaux afin d’obtenir une valeur spécifique ; cependant, je souhaite que la requête retourne la valeur spécifique à la place. Est-ce possible ?

Merci !

1 « J'aime »

Excellente question, mais non, ce n’est pas une option. Il n’y a rien dans l’application principale qui écoute les paramètres pour filtrer.

Je pense que vous aurez tout intérêt à simplement filtrer les résultats soit avec un outil comme jq en ligne de commande, soit en utilisant le langage de programmation que vous utilisez pour effectuer les requêtes API.

Si c’est effectivement une exigence indispensable, deux options existent cependant. Vous pourriez utiliser le plugin Data Explorer avec une requête qui ne retourne que les données dont vous avez besoin, puis effectuer une requête API vers cette requête. Une autre alternative serait de créer un plugin personnalisé pour lequel vous créez une nouvelle route et un nouveau contrôleur qui ne retournent que les données dont vous avez besoin.

1 « J'aime »

Incroyable ! Je pense que cela aidera beaucoup. :folded_hands: Merci beaucoup !

1 « J'aime »

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