@RequestParam
public @interface RequestParam
指示方法参数应绑定到 Web 请求参数的注释。
支持 Spring MVC 和 Spring WebFlux 中带注释的处理程序方法,如下所示:
在 Spring MVC 中,“请求参数”映射到查询参数、表单数据和多部分请求中的部分。这是因为 Servlet API 将查询参数和表单数据组合到一个称为“参数”的映射中,其中包括请求正文的自动解析。
在 Spring WebFlux 中,“请求参数”仅映射到查询参数。要使用所有 3、查询、表单数据和多部分数据,您可以使用数据绑定到使用ModelAttribute注释的命令对象。
如果方法参数类型是Map并且指定了请求参数名称,则假设适当的转换策略可用,则请求参数值将转换为Map 。
如果方法参数是Map<String, String>或MultiValueMap<String, String>并且未指定参数名称,则使用所有请求参数名称和值填充 map 参数。
@ApiOperation("分页查询车辆信息列表")
@RequestMapping(value = "/list", method = RequestMethod.GET)
@ResponseBody
public CommonResult<CommonPage<CarInfo>> getCarInfoList(
@RequestParam(value = "pageSize", defaultValue = "1") Integer pageSize,
@RequestParam(value = "pageNum", defaultValue = "5") Integer pageNum) {
Page<CarInfo> carInfoList = carInfoService.getCarInfoList(pageSize, pageNum);
return CommonResult.success(CommonPage.restPage(carInfoList));
}
在SpringMVC框架中,当通过@RequestMapping来处理URL请求时,可以通过@RequestParam将url的参数绑定到方法的变量中,属于参数部分,来看一下postman截图
@PathVariable
public @interface PathVariable
指示方法参数应绑定到 URI 模板变量的注释。支持RequestMapping注释的处理程序方法。
如果方法参数是Map<String, String>则映射将填充所有路径变量名称和值。
@ApiOperation("根据ID获取菜单详情")
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@ResponseBody
public CommonResult<SysMenu> getItem(@PathVariable Long id) {
SysMenu sysMenu = menuService.getById(id);
return CommonResult.success(sysMenu);
当我们想取url路径上面的值id的时候可以直接通过@PathVariable 对其声明相同的名字、类型,因为其中存在@AliasFor这个注解。下图数字9这个id属于url路径的一部分,来看一下postman截图
现在你应该了解了@RequestParam和@PathVariable的简单区别了吧。