SpringBoot getpost请求详解

66 篇文章 1 订阅
63 篇文章 1 订阅
本文详细介绍了SpringBoot中GET和POST请求的参数绑定方式,包括普通参数形式如基本数据类型、包装类型、自定义对象和复合对象、List、Map及RequestParam注解的使用。此外,还讲解了POST请求的Json模式参数绑定,如@RequestBody注解、绑定自定义对象、复合对象、数组和多个对象。内容覆盖了前端参数与控制器参数的对应规则以及相关注意事项。
摘要由CSDN通过智能技术生成

目录

一、普通参数形式

基本数据类型(以int为例)

?包装类型参数绑定

自定义对象类型参数绑定

自定义复合对象类型参数绑定

List参数绑定

Map参数绑定

@RequestParam注解解析

1)参数限制(可用required=false关闭)

2)设置参数默认值

3)自定义参数名称

数组类型参数绑定

1)基本数组类型接收参数

2)List类型接收参数

二、POST请求:Json模式参数绑定

1、@RequestBody注解解析

2、json模式直接绑定自定义对象类型

3、json模式直接绑定自定义复合对象类型

4、json模式绑定数组类型(一般用于批量操作)

5、json模式绑定多个对象(参数类型相同)

1)使用List获取

2)使用Map接收


本文介绍基于SpringBoot下get/post请求

一、普通参数形式

基本数据类型(以int为例)

在controller中写一个int参数绑定的方法

    @GetMapping("/getInt")
    public String getInt(int id){
        return "ID = " + id;
    }

总结:

1)用基本类型进行参数绑定时,就必须传入key值,且value值必须是声明的基本类型,如果页面提交的数据为null或“”的话会出现数据转换异常,因此最好使用包装类型参数

2)前端的参数名和controller的参数名保持一致时就能完成数据绑定,不一致可以使用@RequestParam

    @GetMapping("/getInt2")
    public String getInt2(@RequestParam(value = "ik") int id){
        return "IK = " + id;
    }

包装类型参数绑定

在controller中写多个包装类型参数绑定的方法

    @GetMapping(value = "/getUser",produces = {"application/json;charset=UTF-8"})
    public String  getUser(String name,Integer age){
        return "name = " + name + " age = " + age;
    }

总结:

1)包装类型绑定参数时和基本数据类型一样,传的key值要和里面绑定的参数名一致

2)包装类型绑定参数时参数的值可以不传为null,也可以为空

自定义对象类型参数绑定

    @GetMapping("/getImtes")
    public Items getImtes(Items items){
        return items;
    }

总结:1)只要将对象的属性名和前端的input的参数名一致即可

自定义复合对象类型参数绑定

    @GetMapping(value = "/getOrderForm",produces = {"application/json;charset=utf-8"})
    public OrderForm getOrderForm(OrderForm orderForm){
        return orderForm;
    }

总结:

1)自定义复合对象类型和自定义对象类型是一样的用法

2)自定义复合对象类型前端input的参数名要使用“属性名(对象类型的属性).属性名"来命名

List参数绑定

@GetMapping(value = "/getIds",produces = {"application/json;charset=utf-8"})
public List<Long> getIds(@RequestParam("ids") List<Long> ids){
   return ids;
}

总结:

1)前端传送通过逗号隔开

Map参数绑定

    @GetMapping(value = "/getMap")
    public Map<String,Object> getMap(@RequestParam  Map<String,Object> map){
        return map;
    }

总结:

1)需要RequestParam注解

@RequestParam注解解析

@RequestParam注解的作用有参数限制、设置参数默认值、自定义参数名称

1)参数限制(可用required=false关闭)

    @GetMapping(value = "/getName",produces = {"application/json;charset=utf-8"})
    public String getName(@RequestParam(required = false) String name){
        return name;
    }

2)设置参数默认值

    @GetMapping("/defaultValue")
    public Integer defaultValue(@RequestParam(defaultValue = "100") Integer num){
        return num;
    }

3)自定义参数名称

大家可自行尝试

总结:

1)@RequestParam注解设置更改参数名称、设置参数限制以及设置参数默认值,可根据不同场景使用

2)@RequestParam可以多个使用

数组类型参数绑定

1)基本数组类型接收参数

    @GetMapping("/getArray")
    public String[] getArray(String[] arr){
        return arr;
    }

总结:很简单,直接用数组类型接收即可

2)List类型接收参数

    @GetMapping("/getList")
    public List<String> getList(@RequestParam List<String> names){
        return names;
    }

总结:1)不可以缺少@RequestParam注解,否则会报错

二、POST请求:Json模式参数绑定

由于前后端分离以及前端的多样性,通常我们使用json数据格式进行参数/数据传递,说到json格式,就得先说一下@RequestBody,这个是使用Json模式进行参数绑定必不可少的一环

1、@RequestBody注解解析

1)@RequestBody注解的作用将json格式的数据转为java对象

2)@RequestBody常用其来处理application/json类型

3)@RequestBody接收的是一个json格式的字符串

2、json模式直接绑定自定义对象类型

@PostMapping("/postItems")
public Items postItems(@RequestBody Items items){
   return items;
}

总结:

1)直接json字符串转换成javaBean,但是前端传的一定是json格式的数据

2)参数名必须和实体类定义的属性名一直才可以正确获取参数

3、json模式直接绑定自定义复合对象类型

    @PostMapping(value = "/postOrderForm",produces = {"application/json;charset=utf-8"})
    public OrderForm postOrderForm(@RequestBody OrderForm orderForm){
        return orderForm;
    }

总结:

1)两者都需要参数名和实体类定义的属性名一致

2)直接获取的方式,层级的参数名需要用.指定;@RequestBody形式参数json格式需要用嵌套的形式

4、json模式绑定数组类型(一般用于批量操作)

controller使用@RequestBody+List接收数组(推荐)

    @PostMapping("/postIds")
    public List<Integer> postIds(@RequestBody List<Integer> ids){
        return ids;
    }

总结:

1)@RequestBody获取List数组类型参数使用比较广泛

2)后续可以将list中的内容转化为String类型,以","分割

5、json模式绑定多个对象(参数类型相同)

1)使用List获取

    @PostMapping("/postItemList")
    public List<Items> postItemList(@RequestBody List<Items> items){
        return items;
    }

2)使用Map<String,Object>接收

    @PostMapping("/postMapItems")
    public Map<String,Items> postMapItems(@RequestBody Map<String,Items> map){
        return map;
    }

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值