从API GET响应中仅返回特定字段

继续在 Discourse API 文档 中的讨论:

你好

我找不到这个问题的答案,请问。有人知道是否可以指定 Discourse API 对 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 和数组以获取特定值,但是,我希望请求返回特定值。这可能吗?

谢谢!

1 个赞

这是一个很好的问题,但不行,这不是一个选项。核心应用程序中没有任何东西会监听参数进行过滤。

我认为你最好还是过滤掉结果,可以使用命令行工具 jq,或者使用你正在使用的任何编程语言来发出 API 请求。

如果这确实是一个必须满足的要求,那么有两个选项。你可以使用数据浏览器插件(data explorer plugin)和一个只返回你所需数据的查询,然后向该查询发出 API 请求。另一个选择是创建一个自定义插件,你可以在其中创建一个新的路由和控制器,只返回你所需的数据。

1 个赞

太棒了!我认为这会有很大帮助。:folded_hands: 非常感谢!

1 个赞

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