When we can use @path variable vs when we can use @queryParameter
>Solution :
For instance, let’s say you want to have an url for fetching a specific order with id: OR-21345678
The "template" url you probably will have would look like this: https://example.org/order/{id}, therefore the url for the order OR-21345678 would be: https://example.org/order/OR-21345678. As we can see we have a variable which is located inside the path, that’s why it is called @PathVariable and you can use it like this:
@RequestMapping(value = "/orders/{id}", method = RequestMethod.GET)
@ResponseBody
public String getOrder(@PathVariable final String id) {
return "Order ID: " + id;
}
Following the same example, let’s say you would like to add some filters like a specific state. You can do it using a query parameter which could be: https://example.org/order/OR-21345678?state=PENDING. In that case you will use a @QueryParam:
@RequestMapping(value = "/orders/{id}", method = RequestMethod.GET)
@ResponseBody
public String getOrder(@PathVariable final String id, @QueryParam("state") String state) {
return "Order ID: " + id + "\nState: " + state;
}