自存 关于RestController请求传参数 前端和后端相关
1.Get请求
Get请求传递参数一般是
1.通过@PathVariable来映射 URL 绑定的占位符
后端
@GetMapping("test/{id}")
public R test(@PathVariable Integer id){
System.out.println(id);
return R.success(id);
}
前端
export function test(id:any){
return request({
url:"/test/"+id,
method:"get",
})
}
请求格式
2 通过params传递参数
关于data 和params两种传递参数的方法 data传递的是再请求体里面传递参数,而params是在请求头传递参数 post 就既可以用请求头也可以用请求体
前端
export function test(id:any){
return request({
url:"/test",
method:"get",
params:{
id:id
}
})
后端
@GetMapping("test")
public R test(String id){
System.out.println(id);
return R.success(id);
}
请求格式
@Requestparam注解是代表这个参数必须要传
也可以定义一个实体类来接收
@Data
public class Test {
private String name;
private String age;
private String sex;
}
后端
@GetMapping("test")
public R test( Test test1){
// System.out.println(test);
System.out.println(test1);
return R.success(test1);
}
前端
export function test(id:any){
return request({
url:"/test",
method:"get",
params:{
name:"张三",
age:"18",
sex:"男",
test:"test"
}
})
可以校验实体类
@Data
public class Test {
@NotBlank(message = "用户名不能为空")
private String name;
@NotBlank(message = "年龄不能为空")
private String age;
@NotBlank(message = "性别不能为空")
private String sex;
}
@GetMapping("test")
public R test(@Validated Test test1){
// System.out.println(test);
System.out.println(test1);
return R.success(test1);
}
Get请求是通过Url方式传递的 ,所以Get请求不能用@RequestBody来传递参数
2.post请求
@RequestBody是找寻请求体里的数据的,我测试下来 @RequestBody可以接受实体类,可以接收list集合 但接收字符串有一点点问题
2.1接收实体类
前端
export function test(id:any){
return request({
url:"/test",
method:"post",
data:{
name:'张三',
age:'18',
sex:'男'
}
})
后端
@PostMapping("test")
public R test(@RequestBody Test test){
System.out.println(test);
return R.success(test);
}
接收list集合
前端
export function test(id:any){
return request({
url:"/test",
method:"post",
data:[1,2,2,2,,32,13,123]
})
后端
@PostMapping("test")
public R test(@RequestBody List<Integer> ids){
System.out.println(ids);
return R.success(ids);
}
接收字符串有一点问题好像。。。不知道是不是我格式有问题
前端
export function test(id:any){
return request({
url:"/test",
method:"post",
data:'test'
})
后端
@PostMapping("test")
public R test(@RequestBody String test){
System.out.println(test);
return R.success(test);
}
打印结果
多出一个等于号 ,我个人推测把字符串传递给表单的时候就是以json的格式传输的,requestBody接收自然以json格式解析,所有多出一个=