Retornar apenas campos específicos da resposta GET da API

Continuando a discussão de Documentação da API do Discourse:

Olá,

Não consegui encontrar uma resposta para isso, por favor. Alguém sabe se é possível especificar que a resposta da API do Discourse a uma solicitação GET retorne apenas o campo solicitado?

Por exemplo, a solicitação GET para Listar membros do grupo (https://{defaultHost}/groups/{id}/members.json) retorna:

 {
   "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
   }
 }

Existe alguma maneira de fazer com que a resposta retorne apenas um campo específico? Por exemplo, para retornar apenas os nomes de usuário dos membros?

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

Eu sei que é possível recuperar toda a resposta e, em seguida, usar código para filtrar o JSON e os arrays a fim de obter um valor específico; no entanto, eu quero que a solicitação retorne o valor específico em vez disso. Isso é possível?

Obrigado!

1 curtida

Ótima pergunta, mas não, isso não é uma opção. Não há nada no aplicativo principal que esteja escutando por parâmetros para filtrar.

Acho que você ficará melhor filtrando os resultados com uma ferramenta como jq na linha de comando ou usando a linguagem de programação que você está usando para fazer as solicitações da API.

Se este for realmente um requisito indispensável, duas opções existem. Você poderia usar o plugin data explorer com uma consulta que retorne apenas os dados de que você precisa e, em seguida, fazer uma solicitação de API para essa consulta. Outra alternativa seria criar um plugin personalizado onde você crie uma nova rota e um novo controlador que retorne apenas os dados de que você precisa.

1 curtida

Incrível! Acho que isso vai ajudar muito. :folded_hands: Muito obrigado!

1 curtida

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