我正在开发一个API,我总是尝试为每个场景使用最正确的http状态代码.
其中一种情况是POST请求的响应.例如,端点的POST方法/orders/接收一些信息,如customer:
{
customerDocument: {number: "123.456.789"},
// other informations for create a order
}
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:如果number从customerDocument不存在,是否可以将返回一个404个一个不错的消息,通知客户并没有找到状态码错误?
我通常在特定资源中使用404仅用于GET(最明显的用法),例如:
/customers/{number}/
Run Code Online (Sandbox Code Playgroud)
在诸如"客户不活跃"的业务验证中,我通常使用http状态代码422进行任何http方法(POST,PUT,GET等).我有疑问是否可以使用404或422作为我的POST示例.
sha*_*ncs 11
400根据维基百科的定义,我认为在这种情况下是适当的状态代码:
400错误请求
由于明显的客户端错误,服务器无法或不会处理请求.
根据描述,在语义上,422更好("请求是格式良好但由于语义错误而无法遵循.").但是,422为WebDAV引入,因此最好使用通用状态代码,如400.
400不是完美的状态代码,因为文档编号是存在还是有效并不是那么明显.但是,排除特殊用途状态代码,例如422,400是最佳选择.
为什么404不合适?
从观点的RESTful API点,终点/orders/是一个资源,无论接受GET或POST或别的东西.404仅在资源/orders/本身不存在时才适用.如果/orders/端点存在,但其调用失败(无论是什么原因),响应状态代码必须是其他内容404.
| 归档时间: |
|
| 查看次数: |
2688 次 |
| 最近记录: |