@RequestParam 和 @PathVariable 有啥区别 [重复]
Posted
技术标签:
【中文标题】@RequestParam 和 @PathVariable 有啥区别 [重复]【英文标题】:What is the difference between @RequestParam and @PathVariable [duplicate]@RequestParam 和 @PathVariable 有什么区别 [重复] 【发布时间】:2018-05-05 15:23:15 【问题描述】:我的理解是请求参数是方法传递所需的id,而路径变量说这个变量应该在请求过程中找到
@PreAuthorize("hasRole('ROLE_COACH')")
@PostMapping(value = "/courses/courseId/background/update")
@ResponseStatus(HttpStatus.ACCEPTED)
@ResponseBody
public CourseLiteInfo updateBackground(@RequestParam("file") MultipartFile file,
@PathVariable(value = "courseId") Long courseId) throws IOException
return new CourseLiteInfo(courseService.updateBackground(courseId, file));
【问题讨论】:
【参考方案1】:嗨,
@RequestParam 是绑定为查询参数的参数。例如,此参数可以是可选的以应用过滤器。
google.com?query=param
@PathVariable 是绑定为 url 中的参数的参数。这个参数是需要告知的。
yourapp.com/users/pathparam
【讨论】:
【参考方案2】:RequestParam 映射到 URL 上的命名 URL 参数。
PathVariable 是 URL 路径的一部分,可以更改但仍映射到相同的控制器映射
例如
http://somedomain.com/account/123/details?type=sometype
这里的 123 是一个 PathVariable,可以命名为任何我们想要的名称,而 sometype 是 RequestParam 的值,它必须是名称类型。
【讨论】:
【参考方案3】:@QueryParam 用于访问 URL 的查询字符串中的键/值对(? 后面的部分)。例如在urlhttp://***.com/questions?q=query中,可以使用@QueryParam("q") 来获取q的值。
@PathParam 用于匹配 URL 的一部分作为参数。例如,在http://***.com/questions/questionid 形式的 url 中,您可以使用 @PathParam("questionid") 获取问题的 id
【讨论】:
所以 QueryParam 等于 RequestParam 而 PathVariable 是 PathParam ? 是的,检查一下***.com/questions/13715811/…以上是关于@RequestParam 和 @PathVariable 有啥区别 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
@RequestBody 和 @RequestParam 有啥区别?
@RequestParam@RequestBody和@ModelAttribute区别