如何在REST API中公开枚举值

vin*_*tLg 8 api rest enums restful-architecture

在使用API​​的移动性环境中,高级研究提出了必须由服务器返回的几个动态过滤器.(我们不想与服务器进行太多交换来初始化我们的过滤器)

在REST api中,如何为过滤器搜索公开可能值的枚举?

谢谢你的建议/想法?

arj*_*bar 4

我最初的想法是将搜索视为普通资源。从面向对象的角度来看,搜索可以具有可用于过滤的字段集合。这些字段可以是数字、布尔值、字符串等。

所以,如果我正确理解你的问题,那么我建议这样做:

GET /search_fields
Run Code Online (Sandbox Code Playgroud)

如果您的 API 具有可以执行的多种类型搜索,那么可以通过 id 或它们的名称来标识它们,只要它是唯一的,如下所示:

GET /searches/{search_id}/fields
Run Code Online (Sandbox Code Playgroud)

这将返回搜索字段的集合,如下所示:

[{
  name: 'Field1',
  type: 'boolean'
},
{
  name: 'Field2',
  type: 'number'
},
{
  name: 'Field3',
  type: 'string'
}]
Run Code Online (Sandbox Code Playgroud)

或者如果您的字段实际上只是简单的枚举那么:

[{
  name: 'Field1',
  id: 1
},
{
  name: 'Field2',
  id: 2
},
{
  name: 'Field3',
  id: 3
}]
Run Code Online (Sandbox Code Playgroud)

这是我的建议。请记住,公开 API 没有一种正确的方法。