【发布时间】:2012-03-07 02:51:01
【问题描述】:
场景:
发送POST 请求以处理将导致从外部数据源检索数据的订单。
有三种可能的结果:
- 数据源为请求返回数据
- 没有可用于请求的数据(这被视为错误)
- 无法访问数据源(可能因维护而停机)
1 的明显响应是 200: OK 或 201: Created(根据此请求创建实体)。
2 和 3 适合哪些状态代码?
我考虑过的状态码:
-
503: Service Unavailable当数据源关闭时 -
500: Internal Server Error当数据源关闭时 -
502: Bad Gateway当“没有可用数据”时 -
404: Not Found当“没有可用数据”时 -
403: Forbidden当“没有可用数据”时 -
412: Precondition Failed当“没有可用数据”时
【问题讨论】:
-
您是否尝试使用 POST 请求查询数据?你不应该是使用 GET 方法吗?
-
GET不合适,因为这些数据查询既不安全也不幂等(它们可能会导致货币交换等)。 -
对于
2.,我会分成多个案例。如果没有给出发布数据,我们应该抛出一个400 Bad Request。如果未设置必填字段但其他数据正确,则引发412 Precondition Failed。
标签: http rest http-status-codes