多次调用PUT请求

时间:2016-01-05 17:26:22

标签: rest

我正在尝试访问一个在书架位置添加书籍的REST点。

PUT /bookshelf/books/1

HTTP/1.1 201 Created 

现在,如果我尝试再次添加id为1的书

PUT /bookshelf/books/1

HTTP/1.1 500 Internal server error

我收到500内部服务器错误,并显示响应消息

 "Resource already exists, cannot add duplicate item"

现在这对我来说不对。这是对服务器期望的正确回应吗?考虑到操作是PUT,我觉得客户应该随意运行PUT调用来反复执行。我的理解是否正确?

如果不是500服务器应该返回HTTP/1.1 200 OK

1 个答案:

答案 0 :(得分:0)

PUT是幂等的 - 如果你多次调用它,你应该得到相同的结果。即根据您的请求创建/更新对象。将500返回到PUT请求,因为该对象已经存在,这违反了RESTful语义。在这种情况下,我也期望200回。