What is the difference between @PathParam and @PathVariable

后端 未结 7 1576
天涯浪人
天涯浪人 2020-12-23 19:21

To my knowledge both serves the same purpose. Except the fact that @PathVariable is from Spring MVC and @PathParam is from JAX-RS. Any insights on

相关标签:
7条回答
  • 2020-12-23 19:50

    QueryParam:

    To assign URI parameter values to method arguments. In Spring, it is @RequestParam.

    Eg.,

    http://localhost:8080/books?isbn=1234
    
    @GetMapping("/books/")
        public Book getBookDetails(@RequestParam("isbn") String isbn) {
    

    PathParam:

    To assign URI placeholder values to method arguments. In Spring, it is @PathVariable.

    Eg.,

    http://localhost:8080/books/1234
    
    @GetMapping("/books/{isbn}")
        public Book getBook(@PathVariable("isbn") String isbn) {
    
    0 讨论(0)
  • 2020-12-23 19:52

    @PathParam: it is used to inject the value of named URI path parameters that were defined in @Path expression.

    Ex:

    @GET
    @Path("/{make}/{model}/{year}")
    @Produces("image/jpeg")
    public Jpeg getPicture(@PathParam("make") String make, @PathParam("model") PathSegment car, @PathParam("year") String year) {
            String carColor = car.getMatrixParameters().getFirst("color");
    
    }
    

    @Pathvariable: This annotation is used to handle template variables in the request URI mapping ,and used them as method parameters.

    Ex:

         @GetMapping("/{id}")
         public ResponseEntity<Patient> getByIdPatient(@PathVariable Integer id) {
              Patient obj =  service.getById(id);
              return new ResponseEntity<Patient>(obj,HttpStatus.OK);
         }
    
    0 讨论(0)
  • 2020-12-23 19:52

    @PathVariable

    @PathVariable it is the annotation, that is used in the URI for the incoming request.

    http://localhost:8080/restcalls/101?id=10&name=xyz

    @RequestParam

    @RequestParam annotation used for accessing the query parameter values from the request.

    public String getRestCalls(
    @RequestParam(value="id", required=true) int id,
    @RequestParam(value="name", required=true) String name){...}
    

    Note

    whatever we are requesting with rest call i.e, @PathVariable

    whatever we are accessing for writing queries i.e, @RequestParam

    0 讨论(0)
  • 2020-12-23 20:00

    @PathParam is a parameter annotation which allows you to map variable URI path fragments into your method call.

    @Path("/library")
    public class Library {
    
       @GET
       @Path("/book/{isbn}")
       public String getBook(@PathParam("isbn") String id) {
          // search my database and get a string representation and return it
       }
    }
    

    for more details : JBoss DOCS

    In Spring MVC you can use the @PathVariable annotation on a method argument to bind it to the value of a URI template variable for more details : SPRING DOCS

    0 讨论(0)
  • 2020-12-23 20:04

    @PathParam is a parameter annotation which allows you to map variable URI path fragments into your method call.

    @PathVariable is to obtain some placeholder from the URI (Spring call it an URI Template)

    0 讨论(0)
  • 2020-12-23 20:10

    @PathVariable and @PathParam both are used for accessing parameters from URI Template

    Differences:

    • As you mention @PathVariable is from spring and @PathParam is from JAX-RS.
    • @PathParam can use with REST only, where @PathVariable used in Spring so it works in MVC and REST.
    0 讨论(0)
自定义标题
段落格式
字体
字号
代码语言
提交回复
热议问题