What is the recommended convention to be followed for identifying different GET endpoints that fetch the same model/entity using different fields/parameters?
For example, there is a Student
entity for which I wish to expose different GET endpoints. Suppose the first GET endpoint is a get-by-id endpoint that fetches Student
based on the provided ID. Another endpoint might involve fetching Student
based on, say, email
, yet another endpoint could be for fetching Student
by phone
.
I have a couple of possible approaches for designing their endpoints
- Use separate endpoints
/students/get-by-id/{id}
,/students/get-by-email/{email}
and/students/get-by-phone/{phone}
- Use a single endpoint
/students
and accept request parameters like/students?phone=123
and then in the backend resolve which method must be used for fetching.
What is the recommended method for this?