我的编程空间,编程开发者的网络收藏夹
学习永远不晚

@PutMapping、@PatchMapping、@DeleteMapping解析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

@PutMapping、@PatchMapping、@DeleteMapping解析

@PutMapping、@PatchMapping、@DeleteMapping解析


1. @PutMapping

put请求是从客户端向服务端发送数据,但与post不同的是,put真正的目的其实是执行大规模的替换操作,而不是更新操作

假如,我们有一个订单,我想要更新某个订单的地址信息,这时,我们就可用put请求来完成操作。

@PutMapping("/{orderID}")public Order putOrder(@RequestBody Order order){    return repo.save(order)  //服务端用来保存更新的order}

从语义上讲,put意味着"将数据放到这个URL上",其本质就是替换已有的数据。我们如果省略了订单上的某个属性,那么该属性的值就应该被NULL所替代,甚至订单中的某个物品的实体数据也应一起重新设置,否则它们将从订单中移除。


2. @PatchMapping

patch的目的是对资源数据打补丁或局部更新,举个栗子:

@PatchMapping(path="/{orderId}",consumes="application/json")public Order patchOrder(@PathVariable("orderId") Long orderId,                       @RequestBody Order patch){    Order order = repo.findById(orderId).get();    if(patch.getDeliveryName()!=null){        order.setDeliveryName(patch.getDeliveryName());    }    ......   //下列都是类似的代码    return repo.save(order);}

上面的代码中,允许我们,只有当修改的内容非null时,才在本地数据库中的对应属性上修改,如果客户端没有改动,则属性不动,即对资源数据进行一个局部属性的更新,不会直接对整个实体进行更新。

注意,在GetMapping和PatchMapping中,引用的路径请求都是要变更的资源。


3. @DeleteMapping

有些时候,有的数据可能不再需要了,客户端可以通过HTTP DELETE请求来要移除某个资源。

而 @DeleteMapping 注解就能够非常便捷的声明能够处理DELETE请求的方法。举个栗子:

我们想要有一个能够删除订单资源的API,下面的方法就能实现这一点:

@DeleteMapping("/{orderId}")@ResponseStatus(code=HttpStatus.NO_CONTENT)public void deleteOrder(@PathVariable("orderId") Long orderId){    try{        repo.deleteById(orderId);    }catch(EmptyResultDataAccessException e){}}

在这个方法中,真正负责删除订单的是里面的代码,@DeleteMapping指定deleteOrder()方法处理针对“/orders/{orderId}的DELETE请求。

在该方法中,需要注意的是,@ResponseStatus注解确保的是HTTP状态码为204。对于已经不存在的资源,我们没有必要返回任何的资源数据给客户端,因此DELETE请求中通常没有响应体,我们要以HTTP状态码的形式让客户端知道不要期望得到任何的内容。

最后

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

小编已加密:aHR0cHM6Ly9kb2NzLnFxLmNvbS9kb2MvRFVrVm9aSGxQZUVsTlkwUnc==出于安全原因,我们把网站通过base64编码了,大家可以通过base64解码把网址获取下来。

来源地址:https://blog.csdn.net/m0_54883970/article/details/126801623

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

@PutMapping、@PatchMapping、@DeleteMapping解析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

目录