SpringBoot与前端参数传递总结

@RequestParam/@RequestBody/@PathVariable/不用注解。

@RequestParam

如果参数名字相同,和不用注解效果一样

这个注解用来绑定单个请求数据,既可以是url中的参数,也可以是表单提交的参数和上传的文件。

url中的参数

1
2
3
4
5
6
7
8
@ApiOperation("查询商品")
@GetMapping("/product/list")
public Object getList(PmsProductQueryParam productQueryParam,
@RequestParam(value = "pageSize") Integer pageSize,
@RequestParam(value = "pageNum") Integer pageNum) {
List<PmsProduct> productList = productService.list(productQueryParam, pageSize, pageNum);
return new CommonResult().pageSuccess(productList);
}

表单传参

无法处理json

不用注解

1
2
3
4
5
6
7
8
9
@ApiOperation("查询商品")
@GetMapping("/list")
@PreAuthorize("hasAuthority('pms:product:read')")
public Object getList(PmsProductQueryParam productQueryParam,
Integer pageSize,
Integer pageNum) {
List<PmsProduct> productList = productService.list(productQueryParam, pageSize, pageNum);
return new CommonResult().pageSuccess(productList);
}

url传参和表单传参可以不用注解,直接传参,参数名字要一样。

url中的参数

表单传参

无法处理JSON参数

@RequestBody

这个注解是传JSON对象用的。不能通过Form表单、URL传参。

1
2
3
4
5
6
7
8
9
package com.sunnie.mall.dto;

import lombok.Data;

@Data
public class TestDto {
private Integer pageSize;
private Integer pageNum;
}
1
2
3
4
5
6
@ApiOperation("查询商品")
@GetMapping("/list")
@PreAuthorize("hasAuthority('pms:product:read')")
public Object getList(PmsProductQueryParam productQueryParam,@RequestBody TestDto testDto) { List<PmsProduct> productList = productService.list(productQueryParam, testDto.getPageSize(), testDto.getPageNum());
return new CommonResult().pageSuccess(productList);
}

JSON成功

无法解析表单

无法解析url参数

@PathVariable

这个注解可以将URL中的占位符参数绑定到控制器处理方法的入参。

谢谢小天使请我吃糖果
0%