SpringMVC中@PathVariable与@PathParam讲解
后端如何获取前端传的参数
传统来讲,肯定是两种⽅式为主,⼀种是 GET ,⼀种是 POST ,这两种⽅式都是向⼀个 URL 传参 GET ⽅式体现到了地址栏⾥,POST ⽅式将内容放在了 body ⾥
@RequestParam 和 @PathVariable 注解是⽤于从 request 中接收请求的,两个都可以接收参数,关键点不同的是@RequestParam 是从request ⾥⾯拿取值,⽽ @PathVariable 是从⼀个URI模板⾥⾯来填充
@PathVariable
通过 URI 模板来填充
举例:
@RequestMapping(value = "/getbyid/{id}", method = RequestMethod.GET)
@ResponseBody
private Map<String, Object> getbyid( HttpServletRequest request,@PathVariable("id") int idnum){
Map<String, Object> modelMap = new HashMap<String, Object>();
modelMap.put("idnum", idnum);
return modelMap;
}
当我们访问:
localhost:8080/upmovie/movie/getbyid/19
我们可以直接获取地址⾥的19
@PathParam
获取 request ⾥的值
@RequestMapping(value = "/getbyid", method = RequestMethod.GET)
@ResponseBody
private Map<String, Object> getbyid( HttpServletRequest request,@RequestParam(value="id", required=true)int idnum){
Map<String, Object> modelMap = new HashMap<String, Object>();
modelMap.put("idnum", idnum);
return modelMap;
}
当我们访问:
localhost:8080/upmovie/movie/getbyid?id=21
springmvc的注解有哪些我们只能获取 ?id 的值,如果是 POST ⽅式,我们也可以获取指定值
优缺点
直接获取 URI 模板⾥的值是很⽅便的,不⽤去获取 request ⾥的固定参数,⽐较直接,藏在 request ⾥的使⽤ POST ⽅式会优雅⼀点,如果只是 ID 这种单个或者多个数字字母,使⽤ @PathVariable 会好很多,这⾥借鉴的是 thinkphp5 ⾥的优点加以利⽤。
总结
我认为在单个参数提交 API 获取信息的时候,直接放在 URL 地址⾥,也就是使⽤ URI 模板的⽅式是⾮常⽅便的,⽽不使⽤
@PathVariable 还需要从 request ⾥提取指定参数,多⼀步操作,所以如果提取的是多个参数,⽽且是多个不同类型的参数,我觉得应该使⽤其他⽅式。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。