Sto progettando un sistema che
- Agire come proxy che chiama un servizio su back-end nel contesto di utente e sua sessione
- Gestisci sessioni per utenti su più back-end
Esporrò il sistema su HTTP.
La maggior parte delle richieste avrà bisogno dei parametri ID back-end , user-id e ID-sessione , ora posso modellarla come parametri del percorso
/:back-end-id/:user-id/:session-id/...
O come intestazioni HTTP ( x-agrzes-back-end-id
, x-agrzes-session-id
, x-agrzes-user-id
)
Dove è meglio mettere quei parametri?
Per gli endpoint proxy non li voglio assolutamente nel corpo o nella query poiché voglio inoltrarli come è per il back-end.
L'API verrà utilizzata da server a server.
Il significato della sessione potrebbe essere qualcosa come l'autorizzazione OAuth. Il sistema gestisce l'ottenimento e il rinnovo delle credenziali di accesso e quindi consente in modo trasparente di accedere alle risorse di back-end utilizzando tali credenziali.
Quindi lo scambio di esempio potrebbe apparire come questo
- Stabilisci la sessione
foo
per l'utentebar
con il back-endbazz
- < OAuth exhacnge gestito e guidato dal sistema >
- Chiama il servizio
A
sul back-endbazz
nel contesto dell'utentebar
e la sua sessionefoo
(funziona se la sessione è stabilita e le credenziali sono valide)
L'identificativo di sessione è scelto dal client, quindi per tutti e tre (id di sessione, id utente, id di sessione) sono necessari per trovare la sessione il client non deve memorizzare identificativi di sessione generati, quindi può essere stateless.