@RequestParam,@PathParam,@PathVariable,@QueryParam注解的使用区别
注解所属框架
@RequestParam
和 @PathVariable
注解是用于从 request
中接收请求的,两个都可以接收参数,关键点不同的是 @RequestParam
是从 request
里面拿取值,而 @PathVariable
是从一个URI模板里面来填充
所属平台 | 获取url模板上数据的(/{id})@DefaultValue | 获取请求参数的(包括post表单提交)键值对(?param1=10¶m2=20)、可以设置defaultValue |
---|---|---|
JAX-RS | @PathParam | @QueryParam |
Spring | @PathVariable | @RequestParam |
详细介绍
@RequestParam
前端传来的这种 url,可以使用以下方式获取
@GetMapping("/api/private/v1/users")
public JSONResult userList(@RequestParam(value = "query", required = false) String query,
@RequestParam(value = "pagenum") int pageNum,
@RequestParam(value = "pagesize") int pageSize) {
UserListDTO result = userService.userList(query, pageNum, pageSize);
return JSONResult.build(result, "查询成功", 200);
}
@PathVariable
这是在解析 URL 里的变量,在 Mapping 中使用 {uId}
的方式获取
@PutMapping("/api/private/v1/users/{uId}/state/{type}")
public JSONResult userState(@PathVariable(value = "uId") Integer uId,
@PathVariable(value = "type") Boolean type) {
int i = userService.userState(uId, type);
if (i > 0) {
SpManager spManager = userService.selectOneById(uId);
ManagerDTO managerDTO = new ManagerDTO();
BeanUtils.copyProperties(spManager, managerDTO);
return JSONResult.build(managerDTO, "设置状态成功", 200);
}
return JSONResult.build(null, "设置状态失败", 400);
}
@PathParam
等同于 Spring 的 @PathVariable
是一样的,也是基于模板的,但是这个是 jboss
包下面的一个实现,上面的是 Spring 的一个实现,都要导包
@QueryParam
与 Spring 的 @RequestParam
作用一致
@ResponseBody
表示从服务器返回数据的时候,是以 JSON 的形式返回的
@RequestBody
表示接收的是 JSON 数据,是一个 POST 请求
没有修不好的电脑