Normalmente in REST si otterrebbe:
/customers -> List of customers (We include links here in HATEOS so in this JSON you will find link to /customers/123)
/customers/123 -> Full details of customer 123 (you can limit fields if you want)
/customers/9999 -> If this customer does not exist return error 404
Quindi, come vedete, non otterreste mai un collegamento a / customers / 9999 in / customers perché non esiste. Quindi non incontrerai un cliente scomparso molte volte.
Può succedere anche se, ad esempio, se si memorizza nella cache un collegamento al cliente 100 e viene eliminato. In questo caso il client API riceve un errore 404 che è un errore permanente e cancellerà la sua cache in modo che non si verifichi più.
La tua domanda:
How do I name API endpoints that serve the same entity in different
ways and still adhere to the RESTful API guidelines?
In generale non lo farai. Quello che hai è una risorsa, diciamo un cliente in questo caso. Quella risorsa può essere rappresentata in più modi. Ad esempio, puoi fare:
/customers/123.json
/customers/123.xml
/customers/123.pdf
Stesso cliente, stesso URL, ma rappresentazione diversa. Puoi farlo utilizzando il rilevamento del tipo di contenuto in modo da non dover utilizzare le estensioni, se lo desideri.
Per lo stesso cliente desideri solo un singolo URL. Non più endpoint, non è una strategia per il futuro. REST lavora strongmente con i codici di errore per rispondere alla risposta giusta al tuo cliente. Questo è ciò che impedisce il bisogno di cose come:
I keep the GET endpoint at address "/customer" which accepts an extra
parameter called type which could take values
type="check"/type="fullCustomer" which will determine the flow of
events on the server and serve the appropriate response.
Semplicemente non ne hai bisogno in REST.