找到重复项时,REST POST请求的响应状态代码是什么?

时间:2012-02-23 13:52:18

标签: http rest post restful-architecture http-response-codes

在我的RESTful API客户端中,可能会尝试发布数据库中已有的信息,这不是错误,而是客户端可以忽略的内容,可能会通知用户已存在的dublicate。

现在我在响应正文中返回409 Conflict和已存在的对象。我觉得这是不正确的,因为:

  

由于与当前的冲突,请求无法完成   资源的状态。此代码仅在以下情况下允许   预计用户可能能够解决冲突   重新提交请求。响应机构应该包括足够的内容   用户识别冲突根源的信息。   理想情况下,响应实体将包含足够的信息   用户或用户代理来解决问题;但是,这可能不是   可能而且不是必需的。   via restpatterns.org

并且通常看来,409与PUT的关联性更强。

在这种情况下,正确的答案是什么?可能是303见其他和位置标题?

1 个答案:

答案 0 :(得分:14)

我不确定答案是否正确。我们返回409,其中包含一条重复资源的消息。我们还将超媒体包含在该资源中。看来你也可以使用400 - Bad Request,但这似乎太通用了。我可以看到303也在工作。我想表明存在错误,所以我们选择了409。