Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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
更新在上一操作中删除的资源时出现REST API错误代码_Rest - Fatal编程技术网

更新在上一操作中删除的资源时出现REST API错误代码

更新在上一操作中删除的资源时出现REST API错误代码,rest,Rest,假设我们对已经从服务器上删除的资源执行了PUT(更新)操作 API响应代码应该是什么 4xx-客户端问题,不要再次尝试发送相同的查询 或 5xx-服务器问题,在服务器上找不到资源 或 以上两项都没有? 首先,要小心将CRUD操作映射到HTTP方法。PUT不是更新方法。PUT是用提供的实体替换URI下存储的实体的请求。如果给出了完整表示(请不要使用PUT进行部分更新),则可以使用此选项进行更新,但当您知道完整表示和资源URI时,也可以使用此选项进行创建 因此,答案实际上取决于服务器端语义

假设我们对已经从服务器上删除的资源执行了PUT(更新)操作

API响应代码应该是什么

  • 4xx-客户端问题,不要再次尝试发送相同的查询

  • 5xx-服务器问题,在服务器上找不到资源

  • 以上两项都没有?

首先,要小心将CRUD操作映射到HTTP方法。PUT不是更新方法。PUT是用提供的实体替换URI下存储的实体的请求。如果给出了完整表示(请不要使用PUT进行部分更新),则可以使用此选项进行更新,但当您知道完整表示和资源URI时,也可以使用此选项进行创建

因此,答案实际上取决于服务器端语义。原则上,如果资源已经被删除,并且对同一URI的访问将返回404,那么PUT应该使用提供的表示重新创建它


如果不希望这样,并且您不希望客户端能够重新创建以前删除过的资源,那么我会说,当客户端尝试获取URI时,您删除的资源应该返回410 Gone响应代码,表明该资源在某个点存在,但不会返回,尝试用新的表示法替换它将失败,出现409冲突,详细说明当前状态如何不允许这样做。

首先,要小心将CRUD操作映射到HTTP方法。PUT不是更新方法。PUT是用提供的实体替换URI下存储的实体的请求。如果给出了完整表示(请不要使用PUT进行部分更新),则可以使用此选项进行更新,但当您知道完整表示和资源URI时,也可以使用此选项进行创建

因此,答案实际上取决于服务器端语义。原则上,如果资源已经被删除,并且对同一URI的访问将返回404,那么PUT应该使用提供的表示重新创建它

如果不希望这样,并且您不希望客户端能够重新创建以前删除过的资源,那么我会说,当客户端尝试获取URI时,您删除的资源应该返回410 Gone响应代码,表明该资源在某个点存在,但不会返回,尝试用新的表示替换它将失败,出现409冲突,详细说明当前状态如何不允许这样做。

404:Not found是更好的选择。404:Not found是更好的选择。