【发布时间】:2013-01-10 15:27:03
【问题描述】:
我正在尝试找出使用 REST 约定进行更新的正确方法。到目前为止,我们有:
单个项目的更新:
PUT
https://mydomain.com/dogs/{id} accept: application/json, {dog}
更新多个项目:
PUT
https://mydomain.com/dogs accept: application/json, [{dog1}, {dog2}, ...]
我试图弄清楚惯例是否也规定(除了我们上面的内容之外,或者代替我们上面的内容):
PUT
https://mydomain.com/dogs accept: application/json, {dog}
然后,后续问题:假设我们更新集合时某个元素出现验证错误。惯例是否规定我们返回 422 并拒绝整个请求?还是我们更新有效的并返回 4xx 状态码?
【问题讨论】:
-
在您的第二个示例(列表)中,最好使用 POST。 POST 是“附加”动词,您将两个项目附加到狗列表中。 PUT 的意思是“这是所有狗的集合!”。 ...第三个例子的问题是你不知道狗有什么{id}!这不是狗系列的代表!所以你最好只使用 (1) 或者在 (3) 中再次使用 POST。 POST 更常见于创建。 ...如何返回验证错误完全取决于您——我不知道有明确的约定。恕我直言,我可能会拒绝整件事。