【spring框架】@PathVariable、@RequestParam、@RequestBody三者使用

1|01、@PathVariable使用

@PathVariable 映射 URL 绑定的占位符(只能占一个参数),Spring3.0 新增的功能,通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器(后端controller层的)处理方法的接收参中。

URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到(后端controller层中的)操作方法的接收参数中。

2|0主要是根据请求方法进行类的区别(请求url相同,方式不同):

举例:

1、根据城市Id查询城市,

@GetMapping(value = "/api/city/{id}") public City findCity(@PathVariable("id") int id) { return cityService.findCityById(id); }

前端访问此接口url:

http://localhost:8080/api/city/需要查询城市的id

2、根据城市Id删除城市

// 前端访问此接口url: // http://localhost:8080/api/city/需要删除城市的id @DeleteMapping(value = "/api/city/{id}") public int modifyCity(@PathVariable("id") int id) { return cityService.deleteCity(id); }

3|0REST支持 GET、POST、PUT、DELETE请求方式:

示例: - /api/city/1 HTTP GET : 得到 id = 1 的城市信息 - /api/city/1 HTTP DELETE:删除 id = 1 的城市信息 - /api/city/1 HTTP PUT: 更新 id = 1 的城市信息 - /api/city/ HTTP POST: 新增城市信息

具体代码如下:

@RestController public class CityController { @Autowired private CityService cityService; //根据id查询城市信息 @GetMapping(value = "/api/city/{id}") public City findOneCity(@PathVariable("id") int id) { return cityService.findCityById(id); } //根据id删除城市信息 @DeleteMapping(value = "/api/city/{id}") public int modifyCity(@PathVariable("id") int id) { return cityService.deleteCity(id); } //查询所有城市信息 @GetMapping(value = "/api/city") public List<City> findAllCity() { return cityService.findAllCity(); } //添加城市信息 @PostMapping(value = "/api/city") public int createCity(@RequestBody City city) { return cityService.saveCity(city); } //修改城市信息 @PutMapping(value = "/api/city") public int modifyCity(@RequestBody City city) { return cityService.updateCity(city); } }

4|02、@RequestParam使用(请求体或url后获取数据)

@RequestParam有三个配置参数:

  1. required 表示是否必须,默认为 true(可省略不写)。
  2. defaultValue 可设置请求参数的默认值(可省略不写)。
  3. value 为接收url的参数名(一般与接收参数名相同)。

使用如下代码所示

@GetMapping("/user/login/") public ResponseData UserLogin(@RequestParam(value = "username",required = true,defaultValue = "zhangsan") String username,@RequestParam(value = "pwd",required = true,defaultValue = "123456") String pwd) { //业务代码省略 }

@RequestParam 用来处理 Content-Typeapplication/x-www-form-urlencoded 编码的内容,Content-Type默认为该属性。

@RequestParam 可用于其它类型的请求,例如:POST、DELETE等请求。

@RequestParam 可以接受简单类型的属性,如下图所示。

缺点:不支持批量发送数据(比如不能发送集合对象)
在这里插入图片描述

5|03、@RequestBody使用(请求体中获取数据)

一般用于接收前端发送来的 json、xml格式的数据,也就是 application/json、application/xml等类型的数据。

6|0单个对象:

前端发送 json 数据:
在这里插入图片描述
后端使用对象接收:

@PostMapping("/user/userLogin") public String userLogin(@RequestBody User user) { System.out.println(user); return user.toString(); }

7|0多个对象:

前端发送 json 数据:
在这里插入图片描述
后端使用(对象)集合接收:

@PostMapping("/user/userLogin") public String userLogin(@RequestBody List<User> users) { System.out.println(users); users.forEach((user)->{ System.out.println(user); }); return "测试"; }

结果如下:
在这里插入图片描述


__EOF__

本文作者blanset
本文链接https://www.cnblogs.com/blanset/p/16829894.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   求道之愚者  阅读(121)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示