REST操作和状态代码

时间:2016-01-30 14:30:28

标签: rest

我正在通过REST调用调用某种操作,例如原始密码与存储的哈希匹配:

POST /v1/user/:id/password/verification HTTP/1.1

{"password": "correct staple battery horse"}

问题是,应该我使用状态代码来明确指定操作结果?一方面,REST意味着处理资源,因此我创建了一个可能失败的资源“密码验证操作”。另一方面,无论如何都创建了这个资源 - 它只是失败的操作,并且绝对没有用于标记操作失败的正确状态代码 - 404意味着根本没有操作(这是谎言)或者密码不存在(并且“提供的密码与存储的哈希不匹配”与“存储的哈希不存在”是完全不同的结果),403也不正确,因为实际上已经为该操作授予了访问权限。

那么,我应该使用状态代码进行二进制输出(真/假)操作,还是应该坚持将结果传递给返回的有效负载?

1 个答案:

答案 0 :(得分:1)

如果您阅读本书 - 您应该为您的操作找到合适的状态代码。在你的情况下,我认为它会在50*区域中表示错误,但不一定是资源没有被创建。

如果你读完这本书的话。事实上,我已经使用了许多REST API,这些API不会通过本书,只返回自己的状态。例如,获取200 OK状态代码并不罕见,因为HTTP请求 - 响应往返工作正常但仍在有效负载中收到应用错误代码。不确定这是我选择的路径,但正如我所说,它并不罕见。甚至facebook API都是这样工作的(或者就像我上次使用它时的4-5年前一样)。