dav*_*ave 15 api rest post http http-status-codes
想象一下,我们有一个API,可以通过POST创建一个新的Employee
www.example.com/api/employees
Run Code Online (Sandbox Code Playgroud)
一名员工可以被描述为,
{
name: "John Smith",
tax_number: "ABC123"
}
Run Code Online (Sandbox Code Playgroud)
税号对所有人来说都是独一无二的.如果创建了一个创建,并且已存在一个名称和税号与现有记录匹配的记录,则可以安全地假设请求者想要返回该记录的引用(使用它的内部id和其他数据,客户端可能不会有,例如,创建于,更新于).
HTTP状态代码用于返回该资源的内容是什么?我想重定向可以用于返回id,但我更喜欢将整个对象包含在响应中.
这种情况对于简单的重复错误是唯一的,因为如果尝试重复,则意味着您希望创建的记录已经存在 - 而不是与现有记录冲突.
Ced*_*ont 19
我认为如果您将资源发布到API,您期望代码201将声明资源已创建,并且正文将(可以)包含该资源.否则,您首先必须检查资源是否已创建,但这需要两次调用.
否则,您的状态码为409:
由于与资源的当前状态冲突,无法完成请求.
[编辑]阅读了来自amundsen,Ruby和Richardson的Restfull Web Apis
最好的方法是使用409状态代码,指出与服务器上存在的资源存在冲突.将"冲突"资源的URL放在响应的位置标头中,并在正文中添加冲突消息