为什么通过Get或POST可以实现相同的Delete或Put Mapping



@RestController公共类TestController{

@GetMapping("/test")
public List<String> testApi() {
return (List<String>) Arrays.asList("one","two","three");
}
@PostMapping("/test")
public String addApi(@RequestBody String name) {
return name;
}
@DeleteMapping("/test")
public String deleteApi(@RequestBody String name) {
return name;
}

}

根据上面的代码片段,使用GET映射或POST映射,我们可以在任何资源/对象上实现所有crud操作。为什么我们需要DELETE/PUT/PATCH。我能从概念上理解。在实践中它将如何使用full。有人能回答吗?

标签

使用GET映射或POST映射,我们可以在任何资源/对象上实现所有crud操作

没错。在20世纪90年代,这正是网络的运作方式;它取得了灾难性的成功。

为什么我们需要DELETE/PUT/PATCH。

拥有这些方法的好处:它们比POST更特定于。反过来,这意味着通用组件可以利用这些方法的附加约束来做有用的事情。

例如:PUT和DELETE都有一个";幂等";限制这在不可靠的网络上很强大,因为这意味着通用组件知道,如果等待响应超时,它可以自动重复请求,而不必担心可能导致的任何财产损失。

PATCH之所以有趣,主要是因为它对OPTIONS的影响;服务器可以通告某个资源支持修补程序,以及支持哪些修补程序文档格式。

因此,如果我们对一个非常大的文档进行非常小的更改,我们的文档编辑器可以查询远程服务器,以发现我们是否可以发送一个小的补丁文档,而不是发送整个修改后的文档。

最新更新