在我的RESTful API客户端中,可能会尝试发布数据库中已有的信息,这不是错误,而是客户端可以忽略的内容,可能会通知用户已存在的dublicate。
现在我在响应正文中返回409 Conflict和已存在的对象。我觉得这是不正确的,因为:
由于与当前的冲突,请求无法完成 资源的状态。此代码仅在以下情况下允许 预计用户可能能够解决冲突 重新提交请求。响应机构应该包括足够的内容 用户识别冲突根源的信息。 理想情况下,响应实体将包含足够的信息 用户或用户代理来解决问题;但是,这可能不是 可能而且不是必需的。 via restpatterns.org
并且通常看来,409与PUT的关联性更强。
在这种情况下,正确的答案是什么?可能是303见其他和位置标题?
答案 0 :(得分:14)
我不确定答案是否正确。我们返回409,其中包含一条重复资源的消息。我们还将超媒体包含在该资源中。看来你也可以使用400 - Bad Request,但这似乎太通用了。我可以看到303也在工作。我想表明存在错误,所以我们选择了409。