我们有一个PUT端点,该端点使用自动递增的MYSQL ID更新一行。如果我们在请求的正文中指定ID,例如更改ID值,则端点不会更改ID(这是正确的行为)。但是,由于技术上没有验证失败,它还会返回200。这应该返回200吗?还是400或403?
答案 0 :(得分:1)
如果我们在请求的正文中指定ID,例如更改ID值,则端点不会更改ID(这是正确的行为)。
如果有效负载中接收到的ID与数据库中存储的ID相匹配,并且更新成功,则该服务应返回successful status code,例如204
或200
。
另一方面,如果有效负载中接收到的ID与存储在数据库中的ID不匹配,我将其理解为client error。 409
似乎是一个合理的选择:它用于指示请求与服务器上资源的当前状态冲突。有效负载中的ID与数据库中的ID之间的 mismatch 是冲突。
409
(冲突)状态码表示请求无法 由于与目标的当前状态冲突而完成 资源。此代码用于用户可能会 能够解决冲突并重新提交请求。服务器 应该生成一个有效载荷,该有效载荷应为用户提供足够的信息 识别冲突的根源。 [...]
响应应包括所有必要的信息,以便客户端识别冲突的来源,然后能够重新提交请求。要报告Web API中的问题,建议您检查RFC 7807。