Le prime due regole di REST sono che tutto è una risorsa e gli unici verbi a cui dovresti pensare sono quelli specificati da HTTP.
Esco su un arto e presumo che tu abbia un modello in cui l'accesso alle identità inizia a /identities
e che puoi estrarne uno per ID con GET /identities/1234
. Presumo anche che la tua API restituisca JSON e il http://host/
all'inizio di qualsiasi URI sia implicito per brevità.
In teoria, potresti GET /identities
e recuperare un array contenente riferimenti a ogni identità nel sistema:
[ "/identities/1234", "/identities/5678", "/identities/9012", ... ]
Probabilmente non è quello che vuoi, ma puoi permetterlo a piccole dosi usando stringhe di query per limitare l'elenco a un sottoinsieme. GET /[email protected]
sarebbe un filtro ideale per verificare se esiste un indirizzo e-mail perché le regole aziendali dicono che devono essere uniche. Ciò significa che l'array restituito sarà sempre zero o uno degli elementi:
GET /[email protected]
[ "identities/1234" ]
GET /[email protected]
[]
Un altro modo per farlo è costruire il filtro nel modello, dove ci sono più percorsi per la stessa risorsa:
/identities/by-id/1234
/identities/by-email/[email protected]
Il tentativo di recuperare la seconda risorsa restituirebbe 200
se esistesse un identificativo con un indirizzo email di [email protected]
e 404
se non lo fosse. Pur avendo più percorsi per la stessa risorsa è considerato accettabile nelle interfacce REST, è necessario considerare se presenta alcuni problemi logici come non sapere se due URI non identici puntano alla stessa risorsa.