18

在我的 RESTful API 客户端可能会尝试发布已经在数据库中的信息,这不是错误,而是客户端可以忽略的东西,可能会通知用户已经存在的重复项。

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

由于与资源的当前状态冲突,无法完成请求。仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许使用此代码。响应正文应该包含足够的信息让用户识别冲突的来源。理想情况下,响应实体将包含足够的信息供用户或用户代理解决问题;但是,这可能是不可能的,也不是必需的。 通过restpatterns.org

总的来说,409 似乎与 PUT 更相关。

在这种情况下,正确的反应是什么?会不会是 303 See Other and Location 标头?

4

1 回答 1

15

我不确定是否有正确的答案。我们返回 409 并显示它是重复资源的消息。我们还将超媒体包含在该资源中。看来您也可以使用 400 - Bad Request 但这似乎太笼统了。我可以看到 303 也可以工作。我想指出有一个错误,所以我们选择了 409。

于 2012-02-23T14:21:00.023 回答