Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有mysql id的PUT的HTTP状态代码。_Http_Http Status Codes - Fatal编程技术网

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

具有mysql id的PUT的HTTP状态代码。,http,http-status-codes,Http,Http Status Codes,我们有一个PUT端点,它用自动递增的MYSQL id更新一行。如果我们在请求体中指定id,就像更改id值一样,端点不会更改id,这是正确的行为。但它也返回200,因为技术上没有验证失败。这应该返回200吗?或者应该是400还是403 如果我们在请求体中指定id,如更改id值,端点不会更改id,这是正确的行为 如果有效负载中接收到的id与数据库中存储的id匹配,并且更新成功,则服务应返回一个,例如或 另一方面,如果有效负载中接收到的id与数据库中存储的id不匹配,我会将其理解为一个错误。这似乎是一

我们有一个PUT端点,它用自动递增的MYSQL id更新一行。如果我们在请求体中指定id,就像更改id值一样,端点不会更改id,这是正确的行为。但它也返回200,因为技术上没有验证失败。这应该返回200吗?或者应该是400还是403

如果我们在请求体中指定id,如更改id值,端点不会更改id,这是正确的行为

如果有效负载中接收到的id与数据库中存储的id匹配,并且更新成功,则服务应返回一个,例如或

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

请参见如何在中定义状态代码:

409冲突状态代码表示请求无法执行 由于与目标的当前状态冲突而无法完成 资源此代码用于用户可能需要的情况 能够解决冲突并重新提交请求。服务器 应该为用户生成包含足够信息的有效负载 认识到冲突的根源。[……]


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

语义,在我看来这完全不会改变任何事情。我会亲自返回400。403主要是关于权限的缺乏,而不是错误的请求。我不清楚你看到了什么,你打算做什么。您发送一个ID来更改某些内容,但它不会更改,这是正确的行为?它将给定ID的给定列更改为给定值,但您可以发送一个请求,在该请求中您可以尝试更改ID列本身,但该请求被拒绝。我就是这样理解的。错误400表示客户端出错,403表示试图在没有适当权限的情况下执行某些操作,200表示一切正常。在我看来,未经授权的人越不知道出了什么问题,服务器就越安全。真的要视情况而定。。。它是什么API、谁使用它、如何使用它等。返回值应反映PUT操作的结果。我是否正确理解您的PUT操作是成功的?那么200是正确的返回码。否则,如果操作在逻辑上失败,则可以返回相应的错误。例如,请参阅返回404 in PUT if id not found:@FlashThunder-我们的QA团队正在测试他们试图更改id列本身的流程。更改没有发生,这很好,因为我们不想更改行的id。但是API返回200。这是正确的状态代码还是应该是400?