Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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
Spring boot RESTAPI-使用ID列表删除_Spring Boot_Rest_Http - Fatal编程技术网

Spring boot RESTAPI-使用ID列表删除

Spring boot RESTAPI-使用ID列表删除,spring-boot,rest,http,Spring Boot,Rest,Http,我想从数据库中删除保护。要做到这一点,我需要将列表pfid传递到后端,并且还要传递一些标志removeBackup=true/false 我应该在请求正文中使用DELETE,还是可以附加ID列表(类型为UUID,因此这些ID很长)作为查询参数,并使用附加标志作为查询参数 最好的选择是张贴,但我想删除一些记录 我应该使用DELETE吗 没有 DELETE的语义由定义 注意这一观察结果: 相对较少的资源允许使用DELETE方法——它的主要用途是用于远程创作环境,用户对其效果有一定的指导 删除域的语义

我想从数据库中删除保护。要做到这一点,我需要将列表pfid传递到后端,并且还要传递一些标志
removeBackup=true/false

我应该在请求正文中使用
DELETE
,还是可以附加ID列表(类型为UUID,因此这些ID很长)作为查询参数,并使用附加标志作为查询参数

最好的选择是张贴,但我想删除一些记录

我应该使用DELETE吗

没有

DELETE的语义由定义

注意这一观察结果:

相对较少的资源允许使用DELETE方法——它的主要用途是用于远程创作环境,用户对其效果有一定的指导

删除域的语义;这并不是你想要的——你试图执行的副作用的语义是特定于你的领域的

我应该在请求正文中使用DELETE吗

否,因为DELETE消息的负载没有定义的语义。(在实践中:如果您对客户端运行的环境有足够的控制权,您可能会侥幸逃脱。这是一个错误,但不一定是一个会导致失败的错误。)

附加ID列表。。。作为查询参数

这个你可以做,但有点牵强

机械地说,它是完全直截了当的;您可以很容易地在中描述查询参数列表,这相当于web表单的一种泛化。您当然可以使用构造的URI发送删除请求——毕竟,统一接口的要点是所有资源都以相同的方式理解HTTP方法标记

此外,DELETE的语义是幂等的,这是一个很好的胜利:如果对DELETE请求的响应丢失,我们可以重新发送请求,因为我们知道服务器会理解请求的第二个副本不会改变其含义

但这有点像RPC;从某种意义上说,我们真正要做的是向服务器发送一个文档,该文档描述了我们想要做的一些工作,但我们不是将工作的描述放在文档中,而是将工作的描述放在URI中

这里更好的选择是承认我们不试图删除文档,而是将文档交付给web服务器,以便它可以阅读其中的说明并做一些有用的事情。DELETE不是用于该情况的正确方法标记

最好的选择是张贴,但我想删除一些记录

。记住,万维网以其首选的超文本媒体类型(HTML)获得了灾难性的成功

PUT
在这里也是一个合理的选择。您需要以不同的方式考虑文档,但结果是PUT和DELETE一样具有幂等语义

另一种方式是:考虑将问题通知单(副本)发送到db管理员的收件箱。文档是对所需工作的描述,HTTP语义描述文档的传输,对数据库所做的更改是文档成功交付的副作用

我应该使用DELETE吗

没有

DELETE的语义由定义

注意这一观察结果:

相对较少的资源允许使用DELETE方法——它的主要用途是用于远程创作环境,用户对其效果有一定的指导

删除域的语义;这并不是你想要的——你试图执行的副作用的语义是特定于你的领域的

我应该在请求正文中使用DELETE吗

否,因为DELETE消息的负载没有定义的语义。(在实践中:如果您对客户端运行的环境有足够的控制权,您可能会侥幸逃脱。这是一个错误,但不一定是一个会导致失败的错误。)

附加ID列表。。。作为查询参数

这个你可以做,但有点牵强

机械地说,它是完全直截了当的;您可以很容易地在中描述查询参数列表,这相当于web表单的一种泛化。您当然可以使用构造的URI发送删除请求——毕竟,统一接口的要点是所有资源都以相同的方式理解HTTP方法标记

此外,DELETE的语义是幂等的,这是一个很好的胜利:如果对DELETE请求的响应丢失,我们可以重新发送请求,因为我们知道服务器会理解请求的第二个副本不会改变其含义

但这有点像RPC;从某种意义上说,我们真正要做的是向服务器发送一个文档,该文档描述了我们想要做的一些工作,但我们不是将工作的描述放在文档中,而是将工作的描述放在URI中

这里更好的选择是承认我们不试图删除文档,而是将文档交付给web服务器,以便它可以阅读其中的说明并做一些有用的事情。DELETE不是用于该情况的正确方法标记

最好的选择是张贴,但我想删除一些记录

。记住,万维网以其首选的超文本媒体类型(HTML)获得了灾难性的成功

PUT
在这里也是一个合理的选择。您需要以不同的方式考虑文档,但结果是PUT和DELETE一样具有幂等语义

另一种方式是:考虑将问题通知单(副本)发送到db管理员的收件箱。文档是对所需工作的描述,HTTP语义描述文档的传输以及对数据库所做的更改