quali sono le migliori pratiche in REST da aggiungere o eliminare a un elenco

2

Supponiamo

GET /users/<id>

{
  user_id : "asdasdas-da-sd-asd-as-d",
  firs_name : "asdasd",
  ....
  department : [{
      id : "asdas-da-sdasd-asd",
      name : "asdasdasdasd",
      ...
      },]
}​

Per aggiungere un nuovo dipartimento per quell'utente, devi prima creare un dipartimento:

POST /departments/ 

Quindi utilizziamo PATCH con il dipartimento id

PATCH /users/<id>

{
   department : [
    "asdas-da-sdasd-asd", // #Existing department ids
    "new-one-id"     // # New ID
 ]
}

Questo metodo è ok?

Qual è il modo migliore per gestirli nel lato API e considerare la facilità nel lato client?

O segui qualcosa del tipo:

POST/PUT to  /user/<id>/departments/[<id>]

per aggiungere / aggiornare il reparto

o

DELETE to /user/<id>/departments/<id>

per rimuovere quel reparto dalla lista

  • non usiamo DELETE , ma rendiamo il campo attivo usando PATCH o PUT
posta Sheik797 03.07.2015 - 09:21
fonte

1 risposta

6

Per elencare i reparti utente

Utilizza GET /users/<id>/departments , invece di restituire queste informazioni nella risorsa users .

In questo modo gli argomenti seguenti possono funzionare bene nel modo più RESTful - la relazione user-departments sarà sempre disponibile sotto /users/<id>/departments , invece che a volte disponibile sotto /users/<id> .

Per assegnare un dipartimento a un utente

Il miglior design, IMO, è un PUT /users/<id>/departments/<id> :

  • Il metodo PUT è idempotente: se lo fai più di una volta, il risultato sarà sempre lo stesso;
  • Dichiarando nell'URL il dipartimento che desideri aggiungere, il corpo della richiesta può essere vuoto - a meno che tu abbia bisogno di parametrizzare questa relazione in qualche modo;
  • Assicurati di restituire sempre 200 OK (invece di 201 Created la prima volta), quindi la richiesta è sempre la stessa

Per rimuovere un reparto da un utente

Continua a fare DELETE /users/<id>/departments/<id> .

Non importa ciò che il server sta facendo (eliminazione o segnalazione della relazione user-departments ).
La proposta del metodo DELETE è di rendere qualcosa di non disponibile da ora in poi.

    
risposta data 22.07.2015 - 15:09
fonte

Leggi altre domande sui tag