2

我正在实现一个 REST API,在其中添加资源时,某些 POST 字段只能具有特定值。例如,我有一个带有 usertype 字段的用户资源:这个 usertype 字段只能有 2 个值,即管理员和用户。

您如何允许开发人员以 RESTful 方式发现这些允许的值?

谢谢!

4

2 回答 2

1

您将需要在您的媒体类型中定义枚举的概念。然后,您可以在超媒体控件中枚举允许的值,告诉他们在哪里发布什么。例如 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到枚举中,您可以添加它。老客户可以忽略它,新客户可以利用它。更好的是,您可以根据请求者的授权更改有效值。例如,如果请求者是管理员,那么他们将被赋予administratoruser作为有效值。如果请求者是 auser那么它们仅user作为有效选项给出。诺斯!

于 2012-10-09T11:53:16.267 回答
0

一个简单的解决方案可能是返回允许值的只读资源 /usertypes。

于 2012-10-09T12:12:27.400 回答