A seguito del vincolo un'interfaccia uniforme REST, l'HTTP PUT
e PATCH
metodi devono attenersi alla semantica standard, in modo che si può fare con uno dei due nel seguente modo:
Con PUT
, i clienti possono caricare un intero nuova rappresentazione con l'ordine che vogliono Richiederanno GET /api/v1/items
, modificheranno l'ordine in base alle esigenze e lo invieranno di nuovo con PUT /api/v1/items
.
Con PATCH
, i clienti possono inviare un documento diff che esegue il cambio di ordine di cui hanno bisogno. È possibile utilizzare un formato come json-patch ei client eseguono la modifica con l'operazione move
e i percorsi dell'array.
Essere consapevoli che nessuno di questi sono modelli di progettazione o migliori pratiche. Sono semplicemente come funzionano i metodi PUT
e PATCH
. Idealmente, questo dovrebbe funzionare su qualsiasi applicazione RESTful che implementa correttamente i metodi GET
, PUT
e PATCH
per la risorsa a quell'URI, e questa è la bellezza di REST. Se lo fai nel modo giusto, devi farlo una volta sola e i clienti possono generalizzare per tutti. Ad esempio, un cliente può scegliere di farlo in modo PUT
con piccole raccolte e il modo PATCH
per quelli più grandi.
Sia la vostra idea di utilizzare PATCH
con una serie id e la @dit answerfrom suggerendo di farlo con PUT
non sono realmente RESTful, perché sono la rottura con la semantica standard: la vostra per non usare un formato di Delta, la sua per fare aggiornamenti parziali con PUT
. Tuttavia, entrambe queste opzioni possono essere RESTful se eseguite con POST
. POST
è il metodo per eseguire qualsiasi azione non standardizzata dal protocollo HTTP, in modo che tu possa fare tutto ciò che vuoi con esso, ma devi documentare esattamente come farlo.
Quindi, tocca a voi. Se siete preoccupati di essere RESTful e la vostra applicazione ha obiettivi a lungo termine - sto parlando di anni o addirittura di decenni - direi di fare un'implementazione uniforme dei metodi PUT
e PATCH
come suggerito prima. Se preferisci un approccio semplice, usa la tua o l'idea di dit con POST
.
fonte
2015-04-11 05:15:25
intendi cambiare l'ordine da un cliente? qualche tipo di operazione di aggiornamento? – dit
@dit, cioè. Sto costruendo un'API REST. Ho bisogno di un endpoint per consentire a un client di modificare l'ordine di una piccola raccolta senza "rimettere" di nuovo l'intera raccolta. –