@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的影响;服务器可以通告某个资源支持修补程序,以及支持哪些修补程序文档格式。
因此,如果我们对一个非常大的文档进行非常小的更改,我们的文档编辑器可以查询远程服务器,以发现我们是否可以发送一个小的补丁文档,而不是发送整个修改后的文档。