大概有以下几种方法
1 @RestController()
表明该类 RestFul 风格的Controller。
2 @GetMapping()
用于生命在 Get方式访问的接口 该方式主要用于数据查询。
3 @PostMapping()
用于声明在 Post方式访问的接口 该方式主要用于数据新增。
4 @PutMapping()
用于声明在 Put方式访问的接口 该方式主要用于全部更新。
5 @PatchMapping()
用于声明在 Patch方式访问的接口 该方式主要用于局部更新。
6 @DeleteMapping()
用于声明在 Delete 方式访问的接口 该方式主要用于数据删除。
安全是指不管进行多少次操作,资源的状态都不会改变。
GET
方法用于获取资源,幂等的,具有安全性。
DELETE
方法用于删除资源,非安全,应该满足幂等性,调用一次和N次对系统产生的副作用应该是相同的。
POST
和PUT
的可以简单的理解为POST表示创建资源,PUT表示更新资源。实际用途也是大多如此。两者都可以用来创建或是更新数据。
POST
是非等幂的,多次调用会产生不同的结果。POST操作既不是安全的,也不是幂等的,比如常见的POST重复加载问题:当我们多次发出同样的POST请求后,其结果是创建出了若干的资源。
PUT
多次调用还是会创建的结果是一样的,幂等,非安全。
PATCH
一般是用来局部更新资源的,假设我们有一个UserInfo,里面有userId, userName, userGender等10个字段。可你的编辑功能因为需求,在某个特别的页面里只能修改userName,这时候的更新怎么做?人们通常(为徒省事)把一个包含了修改后userName的完整userInfo对象传给后端,做完整更新。但仔细想想,这种做法感觉有点二,而且真心浪费带宽(纯技术上讲,你不关心带宽那是你土豪)。于是PATCH诞生,只传一个userName到指定资源去,表示该请求是一个局部更新,后端仅更新接收到的字段。PATCH是非幂等的
而PUT虽然也是更新资源,但要求前端提供的一定是一个完整的资源对象,理论上说,如果你用了PUT,但却没有提供完整的UserInfo,那么缺了的那些字段应该被清空.另外PUT会有一个create操作,加入更新的id不存在,会进行创建,而PATCH则没有这个.
http协议,只是为我们提供了这些方法与规范,并没有帮我们实现它们。而具体的业务逻辑由我们自己实现,这些业务逻辑必须要保证上面的规范,比如要put要保证幂等性。想一想,你甚至可以在get放下写个insert方法,但这样就破环安全性与幂等性了。