@RequestParam注解或者不带注解 支持 Content-Type为:Content-Type: application/x-www-form-urlencoded
POST方式
@ApiOperation(value = "查询所有学生", notes = "查询所有学生", httpMethod = "POST")
@PostMapping("/getAllStu")
public JSONResult getAllStu(@RequestParam Integer id, @RequestParam Integer page, Integer pageSize) {
System.out.println("id:" + id);
System.out.println("page:" + page);
if (page == null) {
page = PAGE_SIZE;
}
if (pageSize == null) {
pageSize = COMMON_PAGE_SIZE;
}
PagedGridResult grid = stuService.getAllStu(page,pageSize);
return JSONResult.ok(grid);
}
没有添加注解也一样
@ApiOperation(value = "查询所有学生", notes = "查询所有学生", httpMethod = "POST")
@PostMapping("/getAllStu")
public JSONResult getAllStu(Integer id,Integer page, Integer pageSize) {
System.out.println("id:" + id);
System.out.println("page:" + page);
if (page == null) {
page = PAGE_SIZE;
}
if (pageSize == null) {
pageSize = COMMON_PAGE_SIZE;
}
PagedGridResult grid = stuService.getAllStu(page,pageSize);
return JSONResult.ok(grid);
}
POST方式,此时axios需要使用 import qs from 'qs'
axios
import axios from 'axios'
import qs from 'qs'
axios({
method: 'post',
url: '/getAllStu',
data: qs.stringify({ //必须使用qs,qs在axios里包含了,所以只需要安装axios
id: 1,
page: 11,
}),
}).then((res) => {
const data = res.data.data
this.setState((prevState) => ({
list: data.rows,
}))
})
GET方式
@ApiOperation(value = "查询所有学生", notes = "查询所有学生", httpMethod = "GET")
@GetMapping("/getAllStu")
public JSONResult getAllStu(@RequestParam Integer id,@RequestParam Integer page, Integer pageSize) {
System.out.println("id:" + id);
System.out.println("page:" + page);
if (page == null) {
page = PAGE_SIZE;
}
if (pageSize == null) {
pageSize = COMMON_PAGE_SIZE;
}
PagedGridResult grid = stuService.getAllStu(page,pageSize);
return JSONResult.ok(grid);
}
不带注解
@ApiOperation(value = "查询所有学生", notes = "查询所有学生", httpMethod = "GET")
@GetMapping("/getAllStu")
public JSONResult getAllStu(Integer id,Integer page, Integer pageSize) {
System.out.println("id:" + id);
System.out.println("page:" + page);
if (page == null) {
page = PAGE_SIZE;
}
if (pageSize == null) {
pageSize = COMMON_PAGE_SIZE;
}
PagedGridResult grid = stuService.getAllStu(page,pageSize);
return JSONResult.ok(grid);
}
axios
axios({
method: 'get',
url: '/getAllStu',
params: {
id: 1,
page: 11,
},
}).then((res) => {
const data = res.data.data
this.setState((prevState) => ({
list: data.rows,
}))
})
这样后台就可以接收到 id和page参数值
@RequestBody 注解支持 Content-Type为:Content-Type: application/json;charset=UTF-8
注意:@RequestBody在参数里只能有一个,必须是bean、map、jsonobject。不能是单个类型,否则spring会无法报json转换异常。
POST方式
@ApiOperation(value = "根据id查询学生", notes = "根据id查询学生", httpMethod = "POST")
@PostMapping("/getStu")
public JSONResult getStu(@RequestBody StuBO st) {
Stu stu = stuService.getStuInfo(st.getId());
return JSONResult.ok(stu);
}
axios
axios({
method: 'POST',
url: '/getStu',
data: {
id: 1,
},
}).then((res) => {
const data = res.data.data
this.setState((prevState) => ({
list: data.rows,
}))
})
由于axios get请求,参数不能放入请求体中,所以后端不能使用 @RequestBody 注解的get请求。