Devo specificare l'ID utente nella struttura URL REST?

4

In sostanza, una funzione della mia app è recuperare gli amici dell'utente registrato.

In realtà, esito tra entrambi i tipi di endpoint:

  1. GET / api / utenti / amici
  2. GET / api / users /: userId / friends

Usando 1, userId sarebbe raggiungibile attraverso il token di autenticazione.
Usando 2, il server dovrebbe inoltre verificare la corrispondenza tra il% co_de passato e l'ID utente registrato specificato nel token auth in modo da evitare qualsiasi accesso malevolo ad altri dati utente, come gli amici.

Quindi 1 dovrebbe essere sufficiente, ma non suona come un URL di riposo standard.

Che cos'è una buona pratica?

    
posta Mik378 16.02.2015 - 00:02
fonte

2 risposte

4

La prima soluzione ha il vantaggio di evitare la duplicazione dei dati. La richiesta significa chiaramente:

Hello, I'm John. Give me the list of my friends.

Se possibile, lo abbrevierei addirittura a GET /api/friends .

D'altro canto, se si prevede di poter accedere ad amici di altri utenti, la seconda soluzione sembra quella giusta. La richiesta significa:

Hello, I'm John. Give me the list of friends of John.

ma può anche essere:

Hello, I'm John. Give me the list of friends of Mary.

Ad esempio, una situazione in cui tale cambiamento può essere possibile è dove una persona può trovare i propri amici, ma anche amici dei suoi amici.

    
risposta data 16.02.2015 - 00:10
fonte
2

Rest Api's deve essere guidato da ipertesto! Come faresti clic da un link a un altro in una pagina html standard.

Un URL è un identificativo univoco di una risorsa. Avere un url che rappresenta più di una risorsa è in totale disaccordo con ReST.

Con il tuo esempio, il seguente URL:

/api/users/:userId

dovrebbe avere un link nella sua risposta all'URL userId friends

La tesi di Roy Fielding contiene una serie di vincoli necessari per conformarsi a ReST.

link link link

    
risposta data 16.02.2015 - 00:38
fonte

Leggi altre domande sui tag