To my knowledge both serve the same purpose. Except that @PathVariable
is from Spring MVC and @PathParam
is from JAX-RS. Any insights on this?
@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.
See also: Difference between @RequestParam and @QueryParam Anotation
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) {
@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
@PathVariable
is the equivalent to be used in Spring (?) –
Vitalism @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)
Some can use @PathParam in Spring as well but value will be null when URL request is being made Same time if We use @PathVarriable then if value is not being passed then application will throw error
@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
@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);
}
© 2022 - 2025 — McMap. All rights reserved.