RESTful percorso di risorse API per risorse con relazioni complesse?

0

Nella mia API RESTful, ho utenti, applicazioni e token. Un'applicazione ha un proprietario, che è un utente. Un token è collegato sia a un'applicazione sia a un utente.

Un utente ha sia rappresentazioni pubbliche che private:

  • GET /user - Recupera l'utente autenticato corrente
  • GET /users/:user - Recupera l'utente specificato

Un'applicazione ha una rappresentazione pubblica:

  • GET /applications/:id - Recupera l'applicazione data

Un token è associato sia a un utente che a un'applicazione. Un token è mai pubblico:

  • GET /user/tokens/:id - Recupera il token utente fornito

Similario, le applicazioni di un utente possono essere viste in questo modo:

  • GET /user/applications - Recupera la raccolta delle applicazioni degli utenti autenticati correnti.

Quale dovrebbe essere il percorso della risorsa in una situazione come questa, perché se volessi ottenere tutti i token degli utenti correnti per una data applicazione? Alcune cose che ho considerato:

  • GET /user/tokens/application/:appId - Ho pensato che questo potrebbe essere rappresentato male. Come sarebbe letto? Applicazione dei token degli utenti attuali? È veramente: i token degli utenti attuali per .
  • GET /user/applications/:id/tokens : ritenevo che ciò potesse implicare che, se possedessi un'applicazione, saresti in grado di vedere i token di tutti gli utenti che utilizzano l'applicazione, il che ovviamente non è la funzionalità o la rappresentazione prevista.
  • GET /applications/:id/tokens - Ho ritenuto che ciò fosse problematico in un modo simile a quanto sopra.
posta Seer 19.04.2014 - 01:24
fonte

1 risposta

3

Ricorda che puoi utilizzare la stringa di query per filtrare o limitare il risultato. Dato che stai cercando token di un utente, limitato a una particolare applicazione, è piuttosto naturale

GET /user/tokens?application=:id

La risorsa è una raccolta di token, limitata da un ID applicazione. Questo è coerente con /user/tokens/:id tranne per il fatto che stai restringendo il risultato per ID applicazione invece di un id token.

    
risposta data 19.04.2014 - 01:31
fonte

Leggi altre domande sui tag