目录
本文介绍基于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<E>获取
-
@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;
-
}