我正在实现一个REST API,在添加资源时,某些POST字段只能有特定的值。例如,我有一个带有usertype字段的用户资源:这个usertype字段只能有2个值,即管理员和用户。
如何让开发人员以RESTful方式发现这些允许的值?
谢谢!
答案 0 :(得分:1)
您需要在media-type中定义枚举的概念。然后,您可以枚举超媒体控件中的允许值,以告知它们要发布的内容。例如,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
作为有效值。如果请求者是user
,那么他们只会被user
作为有效选项。在降噪!
答案 1 :(得分:0)
一个简单的解决方案可能是只读资源/ usertypes,它返回允许的值。