Per il sito su cui sto lavorando, stiamo migliorando i nostri URL per un tipo di risorsa, in particolare spostando gli ID numerici verso stringhe univoche e descrittive. Un esempio simile potrebbe essere il passaggio dall'identificazione degli utenti tramite l'ID numerico del database all'identificazione per nome utente (non il caso specifico, ma analogo). Quindi un URL per accedere alle informazioni di un utente utilizzato per assomigliare:REST - supporto di più identificatori possibili
/users/48573
Ed ora sembra che
/users/thisisausername.
L'unico problema è che abbiamo ancora bisogno di essere in grado di prendere loro attraverso gli ID numerici in qualche modo , per i clienti legacy dell'API. Non abbiamo bisogno gli URL riposarsi per reindirizzare (ad esempio /users/48573
non dovrebbe reindirizzare a /users/thisisausername
), abbiamo solo bisogno di un metodo per ottenere i dati corretti utilizzando il vecchio identificativo. La soluzione dovrebbe fornire un modo alternativo di accedere alle informazioni dell'utente (che include comodamente il nuovo identificativo, nome utente) per ID o di accedere solo al nome utente per ID. Alcune possibili soluzioni potrebbero essere:
- Utilizzare un nodo per specificare un metodo alternativo di identificazione, ad es.
/users/byid/48573
- Utilizzando un parametro di query per specificare un metodo alternativo di identificazione, ad esempio
/users/48573?fetchby=id
o/users/48573?byid=true
- Trattamento nome utente-by-id come un'altra risorsa, ad esempio
/identifiers/username/48573
Quale di questi (se presente) è più vicino al REST corretto? Come affronteresti il problema?
ho finito per implementare l'accesso tramite campi non-principale-identificatore come una ricerca. Questa soluzione consente di recuperare più tipi di risorse tramite più campi, pur mantenendo solo uno come identificativo principale. Per coerenza, le API di "ricerca" restituiscono gli elenchi. Quindi il modo ufficiale per accedere a un utente è: /user/thisisausername e per l'accesso da parte ID, abbiamo:? /utenti id = 48573 Allo stesso modo, si potrebbe cercare una serie di campi diversi , come in: /users? firstName = Kelly L'ispirazione era da: http://jwyseur.blogspot.com/2008/12/uri-design-for-rest.html (vedi "cercare una risorsa") –
Quindi hai puntato sul caching? Ho lo stesso problema che hai, ma non posso risolverli con i parametri di query che rimuovono uno dei principali vantaggi di un'API REST. Mi piace il tuo primo suggerimento puntato ... – HDave