1、路径传参
前端传一个参数:123
后端接收一个参数:123
// /{}是必须写的,id是自定义的
// @PathVariable 这个注解也是必须写的,否则接不到参数
@GetMapping("/{id}")
//使用什么类型去接收id的值,要看你后端需要什么类型
public void t1(@PathVariable String id) {
log.info(id);
}
前端传多个参数:123&456
后端接收多个参数:123&456
和接收一个参数一样,只是有几个参数@PathVariable注解就要写几个
// /{}是必须写的,id是自定义的
// @PathVariable 这个注解也是必须写的,否则接不到参数
@GetMapping("/{id}/{num}")
//使用什么类型去接收id的值,要看你后端需要什么类型
public void t1(@PathVariable String id,@PathVariable String num) {
log.info(id + num);
}
2、普通传参
前端传参
后端接收
//首先要明确一点,前端访问的后端路径中 ?问号后边的都是参数
//@RequestParam 这个注解可以加,也可以不加
//当需要这个注解底层的一些功能时,需要加,否则,可以不加,不会出错
//value 这个可以改变前端传递参数的名字,"id" 他和前端的参数名一样即可,String id 这个id可以随便改名
//如果不加@RequestParam 前端传参时,name可以不传,不会报错
//但是加上@RequestParam 前端就必须传name的值,否则就i会出错
//required = false 加上他,就表示前端传参时,name可以不传,不会报错
@GetMapping("/testParam")
public void t2(@RequestParam(value = "id") String id,@RequestParam(required = false) String name) {
log.info(id + name);
}
3、post传参
第一种情况:前端用application/json,也就是json格式传参
后端接收
//如果前端是以json格式传递参数
//那么在接收请求的时候,需要加上@RequestBody注解,值才能成功传递到后端
//如果不加就是null对象,因为item也会被初始化
//item是一个封装的实体类,建议在接收post请求时根据前端传递的json内容封装成实体类接收
@PostMapping("/testParam")
public void t3(@RequestBody Item item) {
log.info(item.getId()+item.getName());
}
第二种情况:前端使用form-data格式,也就是表单格式传参
后端接收
//如果前端使用form-data的格式传参,不可以写@RequestBody注解,否则会报错
//item是一个封装的实体类,建议在接收post请求时根据前端传递的json内容封装成实体类接收
@PostMapping("/testParam")
public void t4(Item item) {
log.info(item.getId()+item.getName());
}
4、集合&数组
前端传递的参数
后端可以有三种接收方式
第一种:使用list集合接收
//接收前端以逗号分隔的多个参数,使用集合必须加上@RequestParam
@PostMapping("/testParam")
public void t5(@RequestParam List<Long> ids) {
log.info("ids",ids);
}
第二种:使用数组接收
//使用数组,加不加@RequestParam注解,都可以
@PostMapping("/testParam")
public void t6(Integer[] ids) {
log.info("ids",ids);
}
第三种:使用可变参数接收
//使用可变参数,接收到的也是数组类型,也可以不加@RequestParam注解
@PostMapping("/testParam")
public void t6(Integer ...ids) {
log.info("ids",ids);
}