我们有一个PUT端点,它用自动递增的MYSQL id更新行。如果我们在请求正文中指定id,就像更改id值一样,端点不会更改id (这是正确的行为)。但是它也返回200,因为技术上没有验证失败。这个应该还200元吗?还是说是400还是403?
发布于 2018-08-22 12:27:47
如果我们在请求正文中指定id,就像更改id值一样,端点不会更改id (这是正确的行为)。
如果在有效负载中接收到的id与存储在数据库中的id匹配,并且更新成功,则服务应该返回一个成功状态码,如204
或200
。
另一方面,如果在有效负载中接收的id与存储在数据库中的id不匹配,我将理解为客户端错误。409
似乎是一个合理的选择:它用来表示请求与服务器上资源的当前状态相冲突。有效负载中的id与数据库中的id之间的不匹配是一个冲突。
6.5.8.409冲突
409
(冲突)状态代码指示由于与目标资源的当前状态发生冲突而无法完成请求。此代码用于用户可能解决冲突并重新提交请求的情况。服务器应该生成包含足够信息的有效负载,以便用户识别冲突的来源。..。
答复应包括所有必要的信息,以便客户识别冲突的根源,然后才能重新提交请求。对于报告Web中的问题,我建议您检查RFC 7807。
https://stackoverflow.com/questions/51956575
复制相似问题