@PathVariable,@RequestParam与@RequestBody注解介绍及 具体结合PostMan请求使用【详细教程】

        今天周末,突然想起来,前几天有个朋友问我,postman怎么请求带有 @PathVariable注解的接口,我仔细一想, 不如给他出篇教程吧,介绍一下三注解对应 postman如何请求传参,

以下我举例 ,尽量多考虑不同类型的参数类型 进行传参演示!

目录:

1、@RequestParam 

1、Params方式

2、form-data方式

3、application/x-www-form-urlencoded方式

2、@RequestBody 

1、使用实体类接参:

 2、使用map接参:

3、@PathVariable

4、组合使用:

@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】

❤鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复讨论(请勿发表攻击言论)

猜你喜欢

转载自blog.csdn.net/weixin_43970743/article/details/109143192