构建RESTful服务时出于好奇心的问题,如何处理更新中的空差异?
假设我们有一个对象' Person'如下所示:
人{ id:123, 名字:" Foo", 姓氏:" Bar", 年龄:" Bar" }
在更新Person的详细信息时,如果客户端传递空params以更新ID为123的人,那么服务器是否应该将其视为
最喜欢的方式是什么?
答案 0 :(得分:1)
我会选择422。在执行实际更新之前检查请求。如果没有更新参数,请退出并返回422。
422无法处理的实体
请求格式正确,但由于语义错误而无法遵循。
找到资源,网址存在,更新成功(虽然它没有做任何事情)并且请求没有格式错误,因此404或400都不对。
您可以使用200 OK,但我个人使用422 because 4xx status codes have an extra indication that the client made a 'mistake'。我认为没有params的更新请求是错误的。
答案 1 :(得分:0)
这取决于您为此人提供空提示的方式。
如果您使用方法PUT
的内容,则提供的内容希望完全替换资源状态。所以我认为这不是正确的事情,因为你预计什么都不会发生。在这种情况下,应在状态代码和内容中返回错误。我同意Tim的意见,应该使用错误422
(它通常在Web API中使用,如来自Github的那个;-))。但请注意,此代码是WebDAV规范的一部分,而某些REST纯粹主义者更喜欢通用错误400
以及有效负载内的详细信息。
如果使用方法PATCH
,则它对应于资源状态的部分更新。我认为在这种情况下,不会返回任何错误,但资源状态不会更新。
也许这个链接可以为您提供额外的提示:https://templth.wordpress.com/2014/12/15/designing-a-web-api/。
希望它可以帮到你, 亨利