我有一个 RESTful API,其中包含一个典型的 PATCH 调用,允许在各种条件下更新字段。在某些情况下(特定状态或值组合),更改会被“锁定”在记录之外。如果用户向所述记录发出 PATCH 请求,但 PATCH 不会导致进行任何更改(即,将字段值设置为与它已经相同的值),那么请求应该返回什么状态?
例如,我有一个记录
{
_id: 12345,
name: 'John Doe',
age: 34,
status: 'locked'
}
我打个电话
PATCH /users/12345
{
age: 34
}
由于记录的状态是“锁定”,因此不允许更改。但是,由于 PATCH 正文声明年龄值应该设置为 34,这就是该记录的年龄值已经是什么,即使记录没有被锁定,请求也不会导致任何更改。
请求是否应该返回 200,因为 PATCH 的结果是用户首先请求的结果,或者是 4xx 代码之一(400、403 甚至 409),因为正在“锁定”记录上尝试操作?