一对一关联REST API中资源已关联时的HTTP响应码选型咨询
一对一关联REST API的HTTP响应码选择
场景1:Source Item已与其他资源关联
返回409 Conflict是最恰当的选择。
HTTP规范中,409状态码用于请求与服务器上当前资源状态冲突的场景,这类冲突通常可通过用户干预解决。结合相关定义:
409 Conflict 状态码表示请求与服务器上当前资源的状态冲突。这种冲突通常是可以通过用户干预解决的。常见场景包括:
- 在版本控制场景下,基于旧版本资源的修改请求与当前版本冲突;
- 试图创建已存在的资源;
- 操作违反了资源的状态约束(如本次的一对一关联限制)。
这里source item的当前状态是“已关联其他资源”,而请求试图创建新的一对一关联,直接违反了资源的状态约束,属于典型的冲突场景,完全符合409的适用范围。
场景2:Source Item未关联,但Destination Item已存在关联
这种情况API执行成功并替换关联后,应返回200 OK(若需返回更新后的关联资源详情)或204 No Content(若无需返回响应体)。
因为按照业务规则,该场景允许替换destination item的现有关联,请求的目标(建立source与destination的关联)已成功完成,不存在冲突,因此应返回成功状态码。
内容的提问来源于stack exchange,提问作者Trenomarcus
相关产品推荐
相关产品推荐

