我将用一个简单的例子描述我的问题,我有2个表(X
和Y
):
Table X Table Y
------------------ ----------
| id | Y_id | | id |
------------------ ----------
我的API路由将从table Y
中删除一行但如果表X
正在使用该行,那么例如这种情况:
Table X Table Y
------------------ ----------
| id | Y_id | | id |
------------------ ----------
| 1 | 1 | | 1 |
------------------ ----------
如果我请求从1
删除id为table Y
的行,我将拒绝此请求,因为该条目正在table X
中使用,在这种情况下应该是什么响应HTTP状态代码?
https://greenbytes.de/tech/webdav/rfc7231.html#status.409:
6.5.8。 409冲突
409(冲突)状态代码表示由于与目标资源的当前状态冲突而无法完成请求。此代码用于用户可能能够解决冲突并重新提交请求的情况。服务器应该生成一个有效载荷,其中包含足够的信息供用户识别冲突源。
冲突最有可能发生在响应PUT请求时。例如,如果正在使用版本控制并且包含PUT的表示更改为与早期(第三方)请求冲突的资源,则源服务器可能使用409响应来指示它无法完成请求。在这种情况下,响应表示可能包含有助于根据修订历史合并差异的信息。