springboot resful api

大概有以下几种方法
1 @RestController() 表明该类 RestFul 风格的Controller。
2 @GetMapping() 用于生命在 Get方式访问的接口 该方式主要用于数据查询。
3 @PostMapping() 用于声明在 Post方式访问的接口 该方式主要用于数据新增。
4 @PutMapping() 用于声明在 Put方式访问的接口 该方式主要用于全部更新。
5 @PatchMapping() 用于声明在 Patch方式访问的接口 该方式主要用于局部更新。
6 @DeleteMapping() 用于声明在 Delete 方式访问的接口 该方式主要用于数据删除。

安全是指不管进行多少次操作,资源的状态都不会改变。

GET方法用于获取资源,幂等的,具有安全性。

DELETE方法用于删除资源,非安全,应该满足幂等性,调用一次和N次对系统产生的副作用应该是相同的。

POSTPUT的可以简单的理解为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方法,但这样就破环安全性与幂等性了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值