Sto sviluppando un'API per un'applicazione a cui sto lavorando e ho trovato una domanda interessante:
Immagina un endpoint API come questo:
GET /customers/123456
che restituisce un singolo oggetto cliente. Ora, nella nostra organizzazione, i clienti possono appartenere a organizzazioni di vendita. Ogni utente API è associato a un'organizzazione e desidero limitare l'accesso di un utente ai clienti associati alla sua organizzazione.
Quindi, dato un utente che appartiene all'organizzazione ABC
e cliente 123456
che appartiene all'organizzazione XYZ
, cosa deve restituire la mia API quando questo utente tenta di ottenere quel cliente?
-
404 Not Found
- se un utente interroga un cliente inesistente, restituisce un404
poiché non è stata trovata alcuna risorsa in quell'URL. -
401 Unauthorized
- se interroghi una risorsa a cui non hai accesso, dovresti ottenere una risposta "non autorizzata".
Mi sembra che se l'API restituisce 401 Unauthorized
o i clienti esistenti di altre organizzazioni e 404 Not Found
per i clienti inesistenti, la mia API sta perdendo informazioni. Ad esempio, un utente dell'organizzazione ABC
potrebbe interrogare l'API e determinare quali ID utente esistono e quali no.
Note aggiuntive:
-
Gli ID cliente sono generati in sequenza e non ci sono spazi vuoti, quindi il tipo di informazione che si perderebbe sarebbe:
- quale sarà il prossimo ID cliente?
- quanti clienti sono stati creati in un periodo di tempo?
-
Le organizzazioni di vendita sono generalmente limitate a particolari aree geografiche e non sono solitamente in concorrenza diretta. Ma alcuni territori si sovrappongono e ci sono delle regole in vigore per governare il "bracconaggio" i reciproci clienti. Quindi, tutto sommato, si tratta di un ambiente leggermente competitivo in cui non vogliamo davvero che le organizzazioni di vendita conoscano i rispettivi clienti.