route parameter vs query parameter code example
Example 1: QUERY vs PATH parameters
Path parameter is a part of the URL and
takes you to end-point/resources and
give you the result of query from that resources.
Query parameter is NOT a part of the URL and they are
added to the url after the ? mark, as key and value
it is filtering the result of query. the end point/resource is
same but it acts like a search button and filter the result and
returns the response.
Additionally, query parameter can be null but path parameter
can't be null. If you don't append the path parameter, you will get
404 error. So you can use path parameter if you want to send the
data as mandatory.
Example 2: query vs path parameters
2 TYPES OF PARAMETERS IN REST SERVICES:
1) QUERY PARAMETERS:
-> is NOT part of url and passed in key=value format
those parameters must be defined by API developer
http://34.223.219.142:1212/ords/hr/employees?limit=100
Query parameters are the most common type of parameters.
They appear at the end of the request URL after a question mark (?),
with different name=value pairs separated by ampersands (&).
Query parameters can be required and optional.
GET /pets/findByStatus?status=available
GET /notes?offset=100&limit=50
2) PATH PARAMETERS
Path parameters are variable parts of a URI path. They are typically
used to point to a specific resource within a collection, such as a user
identified by ID. A URL can have several path parameters, each
denoted with curly braces { }.
GET /users/{id}
GET /cars/{carId}/drivers/{driverId}
GET /report.{format}
When to use ??
If there is a scenario to retrieve a record based on id, for example
you need to get the details of the employee whose id is 15, then you
can have resource with @PathParam.
GET /employee/{id}
If there is a scenario where you need to get the details of all employees
but only 10 at a time, you may use query param
GET /employee?start=1&size=10
(This says that starting employee id 1 get ten records.)
To summarize, use @PathParam for retrieval based on id. User
@QueryParam for filter