今天周末,突然想起来,前几天有个朋友问我,postman怎么请求带有 @PathVariable注解的接口,我仔细一想, 不如给他出篇教程吧,介绍一下三注解对应 postman如何请求传参,
以下我举例 ,尽量多考虑不同类型的参数类型 进行传参演示!
目录:
3、application/x-www-form-urlencoded方式
@PathVariable 与 @Requestbody 组合
先来了解一下,SpringBoot提供的获取参数注解有哪些?
首先我来介绍一下:
1、@RequestParam
顾名思义:获取参数,即是获取传送过来的参数;
请求示例:http://xxxxx?id=xxxxxx
举例:使用@requestParam 获取如下不同类型的参数
@PostMapping("test2")
public R TestTwo(@RequestParam(value = "page", defaultValue = "1") String page,
@RequestParam(value = "size") Integer size,
@RequestParam(value = "bool",required = false) Boolean bool,
@RequestParam(value = "id") Long id
) {
HashMap<String, Object> map = new HashMap<>(16);
//直接获取参数
map.put("page",page);
map.put("size",size);
map.put("bool",bool);
map.put("id",id);
return R.ok().data(map);
}
postman具体请求url:localhost:8081/test/test2?page=2&size=5&bool=true&id=202010182020101820201018
1、Params方式
:使用Postman中的Params方式中传参,也可以在Parms中传参
2、form-data方式
:使用Postman中的form-data方式
3、application/x-www-form-urlencoded方式
:使用Postman中的application/x-www-form-urlencoded方式
注意:以上使用@RequestParam 注解,若参数中有类型为Long,若参数给的过长,则会报转换异常
Failed to convert value of type 'java.lang.String' to required type 'java.lang.Long'; nested exception is java.lang.NumberFormatException: For input string: "202010182020101820201018"
2、@RequestBody
@RequestBody
注解一般主要是用来处理content-type:"application/json charset=utf-8"
或者content-type:"application/xml charset=utf-8"
两种请求数据,一般是异步请求用的比较多些;当前端或者别人传入JSON数据给你时,使用此注解,就已将传入给你的字段或者属性将与你所创建的实体类绑定到一起;或者使用map接收。
请求示例:http://xxxxx/xxx
1、使用实体类接参:
@PostMapping("test5")
public R TestFive(@RequestBody TestEntity testEntity) {
HashMap<String, Object> mapNew = new HashMap<>(16);
mapNew.put("page", testEntity.getPage());
mapNew.put("size", testEntity.getSize());
mapNew.put("bool", testEntity.getBool());
mapNew.put("id", testEntity.getId());
return R.ok().data(mapNew);
}
entity:
@Data
public class TestEntity {
private String page;
private Integer size;
private Boolean bool;
private Long id;
}
2、使用map接参:
当前端或者别人传给你参数与你自己所对应的实体不相符合的时,或者别人传的参数过多又与你当前实体类的属性不符合时,那么你就需要Map去接收,因为JSON数据不是K,V吗?所以我们用Map去装它,情况如下:
@PostMapping("test3")
public R TestThree(@RequestBody Map<String, Object> map) {
HashMap<String, Object> mapNew = new HashMap<>(16);
mapNew.put("page", map.get("page"));
mapNew.put("size", map.get("size"));
mapNew.put("bool", map.get("bool"));
mapNew.put("id", map.get("id"));
return R.ok().data(mapNew);
}
get post方式结果都是一样,就不一一举例了!
3、@PathVariable
顾名思义:路径变量,即是获取链接路径上的变量
请求示例:http://xxxxx/{xxx}/{xxx}
一般用于get请求(post请求也一样), 即 XXX/{XXXid}, 这时的XXXid可通过 @Pathvariable注解绑定它传过来的值到方法的参数上,比如:
@GetMapping("test6/{page}/{size}/{bool}/{id}")
public R TestSix(@PathVariable("page") String page,
@PathVariable("size") Integer size,
@PathVariable("bool") Boolean bool,
@PathVariable("id") Long id) {
HashMap<String, Object> map = new HashMap<>(16);
map.put("page", page);
map.put("size", size);
map.put("bool", bool);
map.put("id", id);
return R.ok().data(map);
}
注意:路径传参数 注意各个参数对应位置
4、组合使用:
@PathVariable 与 @Requestbody 组合
1、举例@PathVariable 与 @Requestbody 的组合使用 其实还有很多注解组合用法,我就不一一举例了,
@PostMapping("test8/{id}")
public R TestEight(@PathVariable("id") Long id,
@RequestBody TestEntity testEntity) {
HashMap<String, Object> mapNew = new HashMap<>(16);
mapNew.put("page", testEntity.getPage());
mapNew.put("size", testEntity.getSize());
mapNew.put("bool", testEntity.getBool());
mapNew.put("id", id);
return R.ok().data(mapNew);
}
说实在的太花哨啦,平时谁会这样组合起来用呀,最常用就就@Requestbody 与 @RequestParam 啦,好啦,今日就介绍到此,咱们下期再见!
借鉴:
https://blog.csdn.net/W_317/article/details/107108538
https://www.cnblogs.com/chengxiaodi/p/11324611.html
❤如果文章对您有所帮助,就在文章的右上角或者文章的末尾点个赞吧!(づ ̄ 3 ̄)づ
❤如果喜欢大白兔分享的文章,就给大白兔点个关注吧!(๑′ᴗ‵๑)づ╭❤~
❤对文章有任何问题欢迎小伙伴们下方留言或者入群探讨【群号:708072830】
❤鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复讨论(请勿发表攻击言论)