L'URL indica la risorsa stessa. Un "cliente" è una risorsa su cui si può agire, quindi dovrebbe essere parte dell'URL di base: /orders/view/client/23
.
I parametri sono proprio questo, per parametrizzare l'accesso alla risorsa. Questo in particolare entra in gioco con post e ricerche: /orders/find?q=blahblah&sort=foo
. C'è una linea sottile tra parametri e sotto-risorse: /orders/view/client/23/active versus /orders/view/client/23?show=active
. Raccomando lo stile di sotto-risorsa e i parametri di riserva per le ricerche.
Poiché ciascun endpoint rappresenta un trasferimento di stato (per manipolare il mnemonico), le intestazioni personalizzate devono essere utilizzate solo per elementi che non implicano il nome della risorsa (l'URL), lo stato della risorsa (il corpo) , o parametri che influenzano direttamente la risorsa (parametri). Ciò lascia veri metadati sulla richiesta di intestazioni personalizzate.
HTTP ha una vasta gamma di intestazioni che coprono la maggior parte di tutto ciò che ti servirà. Dove ho visto intestazioni personalizzate venire in un sistema di richiesta di sistema che operano per conto di un utente. Il sistema proxy convaliderà l'utente e aggiungerà "X-User: userid
" alle intestazioni e utilizzerà le credenziali di sistema per raggiungere l'endpoint. Il sistema di ricezione convalida che le credenziali di sistema sono autorizzate ad agire per conto dell'utente, quindi convalida che l'utente è autorizzato a eseguire l'azione.
Grazie per una risposta così completa! Useresti ancora l'X-User per un'API mobile in cui il rischio di avere un proxy malvagio (che toglie l'intestazione) è ancora alto? –
No, l'uso di X-User che ho citato è nelle connessioni di sistema a sistema in cui il sistema sta agendo per conto di una terza parte. Ad esempio, l'utente U comunica con il server A. Il server A presenta le credenziali al server B con un'intestazione X-User per indicare "Utilizza le mie credenziali per verificare che sia autorizzato a eseguire questa azione per conto dell'Utente U." Questo avviene in architetture orientate ai servizi, e di solito stai usando HTTPS. Una piattaforma mobile dovrebbe quasi sempre essere l'utente stesso a recitare e utilizzare le credenziali in prima persona appropriate per la transazione. – Nialscorva
Il terzo paragrafo è una delle risposte più istruttive che ho letto su SO ;-) – Alistair77