Возвращать только определенные поля из ответа API GET

Продолжаем обсуждение из Документации по API Discourse:

Здравствуйте

Я не смог найти ответ на этот вопрос. Подскажите, пожалуйста, возможно ли указать, чтобы ответ API Discourse на GET-запрос возвращал только запрошенное поле?

Например, GET-запрос для получения списка участников группы (https://{defaultHost}/groups/{id}/members.json) возвращает:

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

Есть ли способ заставить ответ возвращать только конкретное поле? Например, возвращать только имена пользователей участников?

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

Я знаю, что можно получить весь ответ, а затем использовать код для фильтрации JSON и массивов, чтобы извлечь конкретное значение; однако я хочу, чтобы запрос возвращал именно это значение. Возможно ли это?

Спасибо!

Отличный вопрос, но, к сожалению, такой опции нет. В ядре приложения ничего не отслеживает параметры для фильтрации.

Наиболее разумным решением будет отфильтровать результаты самостоятельно: либо с помощью инструмента вроде jq в командной строке, либо используя тот язык программирования, на котором вы делаете запросы к API.

Однако, если это действительно критическое требование, у вас есть два варианта. Вы можете использовать плагин Data Explorer с запросом, который возвращает только нужные данные, а затем сделать API-запрос к этому запросу. Альтернативный вариант — создать собственный плагин с новым маршрутом и контроллером, которые будут возвращать только необходимые данные.

Удивительно! Думаю, это очень поможет. :folded_hands: Большое спасибо!