Tengo una pregunta sobre el diseño de API REST. Aquí es un simple (tal vez demasiado simple) de la API:REST API con varios comandos por recurso
GET /ecommerce/order/123
POST /ecommerce/order (create a new order)
PUT /ecommerce/order/123 (update an existing order)
DELETE /ecommerce/order/123 (cancel order)
Pero lo que si quería el cliente que introduzca una razón para un fin de ser cancelada? Necesitaría enviar datos de publicaciones a la API, pero eso no funcionará con DELETE. Para atender esto, tendría que cambiar DELETE a PUT. Luego publicaría dos recursos diferentes para actualizar y cancelar.
Otra solución sería cambiar la API:
GET /ecommerce/order/123
POST /ecommerce/order/create (create a new order)
PUT /ecommerce/order/update/123 (update an existing order)
DELETE /ecommerce/order/cancel/123 (cancel order)
No estoy seguro de que es la mejor opción.
Hay una pregunta más general sobre cómo REST API maneja varios comandos para un solo recurso.
¡Cualquier entrada sería apreciada! Voy a leer REST en la práctica muy pronto, pero esta pregunta me resulta incómoda.
Me gusta esta respuesta. Los recursos y las entidades de dominio no son uno a uno. –
No me gusta realmente el nombre de CancelledOrder, un nombre de recurso mejor sería OrderCancellation o, en otras palabras, exponer una acción como recurso. Esto también es bastante bueno en el caso de acciones reversibles, ya que podría usar eliminar en la "acción". – Maxem
También cuando esto no se ajusta, me gusta lo que este comentario menciona para el mismo problema: http://programmers.stackexchange.com/a/270421/211215 – Almund