API REST Due possibili metodi di aggiornamento per la stessa risorsa

2

Ho una risorsa che può essere aggiornata in due modi diversi. Proverò a spiegare usando un esempio.

Diciamo che a ogni Person è assegnato un Task . Quindi per aggiornare l'attività, ho

PUT /people/{personId}/task

e invio i dettagli dell'attività nel corpo.

Ora ho bisogno di un altro endpoint per aggiornare l'attività assegnata a una persona. Questo endpoint prenderà una lista di compiti e sceglierà il compito migliore per la persona. Come dovrebbe essere l'endpoint per questo? A me sembra che dovrebbe essere lo stesso di sopra, ma dal momento che l'endpoint non può assumere due corpi di richiesta diversi, sono in perdita.

    
posta Can't Tell 22.02.2018 - 11:43
fonte

2 risposte

1

Idealmente, se stai aggiornando un'attività, sarà buona l'identificazione del compito nel percorso e cambierà la risorsa per essere al plurale. Quindi, il mio suggerimento con le correzioni è:

PUT /persons/{personId}/tasks/{taskId}    //for update the task
PUT /persons/{personId}/tasks/            //for the list choice

Se non è possibile fare le mie correzioni, forse puoi provare questo nel tuo approccio:

PUT /people/{personId}/task              //for update the task
PUT /people/{personId}/tasks             //for the list choice
    
risposta data 22.02.2018 - 13:26
fonte
0
  • Ogni attività unica dovrebbe avere un URI per identificarlo, ad es. %codice%. Non utilizzare solo ID.
  • Quando il cliente ha l'incarico di impostare un'attività, deve o http://my-site.com/tasks/mow-lawn a PUT o /person/{id}/task a PATCH . Utilizzare l'URI dell'attività per identificarlo. Potresti anche fare un /person/{id} con una relazione come LINK .
  • Quando il server ha il controllo sulla selezione della migliore attività da un elenco fornito dal cliente, potresti fare un rel=http://my-site.com/link-relations#current-task a PUT e lasciare l'aggiornamento di / task come effetto collaterale, o /person/{id}/available-tasks a POST che ovviamente non ha restrizioni.
risposta data 05.03.2018 - 18:08
fonte

Leggi altre domande sui tag