Qual è il modo "RESTful" di aggiungere operazioni non CRUD a un servizio RESTful? Supponiamo che io disponga di un servizio che consente l'accesso CRUD a record come questo:
GET /api/car/123 <- Returns information for the Car object with ID 123
POST /api/car <- Creates a new car (with properties in the request)
PUT /api/car/123 <- Updates car 123 (with properties in the request)
DELETE /api/car/123 <- Deletes car 123
POST /api/car/123/wheel/ <- Creates a wheel and associates it to car 123
Se voglio cambiare il colore dell'auto, POST /api/car/123
includerei semplicemente una variabile POST per il nuovo colore.
Ma supponiamo che io voglia acquistare un'auto e che l'operazione sia più complicata del semplice aggiornamento della proprietà di "macchina di proprietà" di un record "utente". È RESTful fare semplicemente qualcosa come POST /api/car/123/purchase
, dove "acquisto" è essenzialmente un nome di metodo? O dovrei usare un verbo HTTP personalizzato, come PURCHASE
invece di POST
?
O le operazioni non CRUD sono completamente al di fuori dell'ambito di REST?
PATCH /api/car/123
e inviare un parametro di colore OPPURE usarePUT /api/car/123
e inviare l'intero oggetto auto. POST dedurrebbe che stai creando una nuova auto e probabilmente non dovresti mai includere un ID alla fine dell'URL