【问题标题】: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));
}

【问题讨论】:

    标签: java spring controller


    【解决方案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://stackoverflow.com/questions?q=query中,可以使用@QueryParam("q") 来获取q的值。

        @PathParam 用于匹配 URL 的一部分作为参数。例如,在http://stackoverflow.com/questions/{questionid} 形式的 url 中,您可以使用 @PathParam("questionid") 获取问题的 id

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-18
        • 2015-11-28
        • 2014-12-29
        • 1970-01-01
        • 2014-08-16
        • 1970-01-01
        • 2017-11-10
        相关资源
        最近更新 更多