我正在实现一个 REST API,在其中添加资源时,某些 POST 字段只能具有特定值。例如,我有一个带有 usertype 字段的用户资源:这个 usertype 字段只能有 2 个值,即管理员和用户。
您如何允许开发人员以 RESTful 方式发现这些允许的值?
谢谢!
您将需要在您的媒体类型中定义枚举的概念。然后,您可以在超媒体控件中枚举允许的值,告诉他们在哪里发布什么。例如 GETting/users
可能会返回以下内容:
<users href="/users">
... collection information and other controls you want to include ...
<create href="/users" method="post">
... fields ...
<usertype type="enum" cardinality="required">
<administrator/>
<user/>
</usertype>
</create>
</users>
create
元素是表单,元素usertype
是表单字段,administrator
并且user
是枚举的有效值。根据此示例,您的媒体类型中将需要集合、表单、表单字段和枚举的结构。
这实际上是我喜欢 REST 的原因之一。由于此信息是在带内传递的,因此您可以轻松更改它而不会破坏(编写良好的)客户端。例如,只是说您想添加editor
到枚举中,您可以添加它。老客户可以忽略它,新客户可以利用它。更好的是,您可以根据请求者的授权更改有效值。例如,如果请求者是管理员,那么他们将被赋予administrator
和user
作为有效值。如果请求者是 auser
那么它们仅user
作为有效选项给出。诺斯!
一个简单的解决方案可能是返回允许值的只读资源 /usertypes。