@RequestParam和@PathVariable之间有什么区别

时间:2017-11-22 01:20:05

标签: java spring controller

我的理解是请求参数是传递方法所需的id,而path变量表示应该在请求过程中找到此变量

   @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));
}

3 个答案:

答案 0 :(得分:2)

<强>您好

@RequestParam是作为查询参数绑定的参数。例如,此参数可以是应用过滤器的可选项。

google.com?query=param

@PathVariable是绑定为url中param的参数。需要通知此参数。

yourapp.com/users/pathparam

答案 1 :(得分:0)

RequestParam映射到URL上的命名URL参数。

PathVariable是URL路径的一部分,可以更改但仍映射到同一个控制器映射

例如

http://somedomain.com/account/123/details?type=sometype

这里123是一个PathVariable,可以命名我们想要的任何东西,sometype是RequestParam的值,它必须是名称类型。

答案 2 :(得分:0)

@ QueryParam 用于访问URL的查询字符串中的键/值对(后面的部分?)。例如,在网址http://stackoverflow.com/questions?q=query中,您可以使用@QueryParam(“q”)来获取q的值。

@ PathParam 用于将网址的一部分作为参数进行匹配。例如,在http://stackoverflow.com/questions/ {questionid}形式的网址中,您可以使用@PathParam(“questionid”)来获取问题的ID