具有mysql id的PUT的HTTP状态代码。

时间:2018-08-21 20:55:12

标签: http http-status-codes

我们有一个PUT端点,该端点使用自动递增的MYSQL ID更新一行。如果我们在请求的正文中指定ID,例如更改ID值,则端点不会更改ID(这是正确的行为)。但是,由于技术上没有验证失败,它还会返回200。这应该返回200吗?还是400或403?

1 个答案:

答案 0 :(得分:1)

  

如果我们在请求的正文中指定ID,例如更改ID值,则端点不会更改ID(这是正确的行为)。

如果有效负载中接收到的ID与数据库中存储的ID相匹配,并且更新成功,则该服务应返回successful status code,例如204200

另一方面,如果有效负载中接收到的ID与存储在数据库中的ID不匹配,我将其理解为client error409似乎是一个合理的选择:它用于指示请求与服务器上资源的当前状态冲突。有效负载中的ID与数据库中的ID之间的 mismatch 是冲突。

了解如何在409中定义RFC 7231状态代码:

  

6.5.8. 409 Conflict

     

409(冲突)状态码表示请求无法   由于与目标的当前状态冲突而完成   资源。此代码用于用户可能会   能够解决冲突并重新提交请求。服务器   应该生成一个有效载荷,该有效载荷应为用户提供足够的信息   识别冲突的根源。 [...]

响应应包括所有必要的信息,以便客户端识别冲突的来源,然后能够重新提交请求。要报告Web API中的问题,建议您检查RFC 7807