假设我们有一个 API,可以通过 POST 来创建一个新的 Employee
www.example.com/api/employees
员工可以描述为,
{
name: "John Smith",
tax_number: "ABC123"
}
税号对所有人来说都是独一无二的。如果进行了创建,并且名称和税号与现有记录相匹配的记录已经存在,则可以安全地假设请求者希望返回对该记录的引用(及其内部 ID 和客户可能不希望的其他数据)例如,创建于、更新于)。
返回该资源的 HTTP 状态代码是什么?我想重定向可以与仅返回 ID 一起使用,但我更愿意将整个对象包含在响应中。
这种情况是简单重复错误所特有的,从某种意义上说,如果尝试重复,则意味着您要创建的记录已经存在,而不是与现有记录冲突。
最佳答案
我认为如果您将资源发布到 API,您会期望代码 201 表明资源已创建,并且正文将(可以)包含该资源。 否则,您首先必须检查资源是否已创建,但这需要两次调用。
否则,您的状态码为 409:
The request could not be completed due to a conflict with the current state of the resource.
[编辑] 在阅读了 amundsen、Ruby 和 Richardson 的 Restfull Web Apis 之后
最好使用 409 状态代码,表明与服务器上存在的资源存在冲突。将那个“冲突”资源的 url 放在响应的位置 header 中,并在正文中添加冲突消息
关于api - 由于存在匹配资源导致资源创建 POST 失败时的 HTTP 响应代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25541203/