REST API创建非预期有效资源时的响应码选择咨询
REST API创建非预期资源时的状态码选择
针对你遇到的场景——客户端请求创建转账交易资源X,但API实际生成了有效冻结资源Y,以下是具体的状态码建议:
优先使用201 Created
虽然创建的资源和客户端预期类型不同,但Y是合法有效的资源,请求本身并未失败,完全符合201状态码「成功创建资源」的核心语义。但必须做好两个关键响应细节:- 设置
Location响应头,指向冻结资源Y的唯一URI,让客户端能直接定位到新创建的资源 - 在响应体中返回Y的完整资源表示(比如冻结金额、关联账户、冻结原因等),明确告知客户端实际创建的资源类型和详情
- 设置
不建议使用的状态码
- 4xx错误码:这类状态码用于标记客户端请求有误或无法被处理,但你的场景中API成功生成了有效资源Y,请求本身是合法的,因此不能用错误码
- 202 Accepted:这个状态码适用于「请求已接受但尚未完成处理」的场景,而你的情况是资源Y已经即时创建完成,不符合该状态码的适用范围
额外提示:一定要在API文档中明确标注转账API的这种特殊行为,让客户端提前知晓请求可能返回冻结资源Y的情况,避免对接时的误解。
内容的提问来源于stack exchange,提问作者explorer
相关产品推荐
相关产品推荐

