在restfull api中传递枚举值

时间:2015-08-10 15:17:21

标签: api rest enums

我手头有这个场景:

  1. 我有一个包含枚举值的API服务器并使用Restfull API发送它。
  2. 客户将收到它并需要根据价值行事。
  3. 我的主要问题:哪个更好 - 发送int值或字符串?我可以看到这两种方法的好处。

    有没有办法避免双方都持有枚举?我不熟悉实际上有用的那个。

    谢谢!

1 个答案:

答案 0 :(得分:1)

如果API服务器维护枚举,则客户端可以通过以下方式获取它:

GET /enums

...将返回枚举值列表:

[
  { "id" : "1001", "value" : "enum-item-1" },
  { "id" : "1002", "value" : "enum-item-2" },
  ...
  { "id" : "100N", "value" : "enum-item-3" },
]

因此允许客户端获取其中一个枚举项:

GET /enums/1017

或者也许对它执行操作:

POST /enums/1017/disable

通常,只能通过其唯一ID引用枚举项 - 如果客户端始终通过查询服务器的枚举列表来启动,则无需在客户端和服务器上维护枚举。

但是 - 如果您的商业案例中的价值观永远是唯一的,并且有令人信服的理由让您有更好的理由。人类可读的URL,可以使用:

GET /enums/enum-item-26

通常,这不是最佳实践,因为枚举项值可能具有商业含义,因此可能会发生变化。尽管目前看来不太可能。