2011-12-14 25 views

Respuesta

13

Tanto POST como PUT se pueden usar para crear y actualizar operaciones en diferentes situaciones. Entonces, ¿cuál es exactamente la diferencia entre PUT y POST? En pocas palabras: use PUT si y solo si conoce tanto la URL donde vivirá el recurso como la totalidad de los contenidos del recurso. De lo contrario, use POST.

POST es un verbo increíblemente general. Debido a que no promete ni seguridad ni idempotencia, y tiene una descripción relativamente suelta en el RFC, puede usarlo para cualquier cosa. De hecho, puede realizar todas sus solicitudes POST request porque POST hace muy pocas promesas; puede comportarse como un GET, un PUT o un DELETE si lo desea. También puede hacer algunas cosas que ningún otro verbo puede hacer: puede crear un nuevo recurso en una URL diferente de la URL en la solicitud HTTP; y puede modificar parte de un recurso sin cambiarlo todo (aunque el método PATCH propuesto pero no ampliamente aceptado puede hacer algo similar).

PUT es un verbo mucho más restrictivo. Toma un recurso completo y lo almacena en la URL dada. Si había un recurso allí anteriormente, se reemplaza; si no, se crea uno nuevo. Estas propiedades admiten la idempotencia, que una operación de creación o actualización ingenua podría no tener. Sospecho que esta puede ser la razón por la cual PUT se define tal como es; es una operación idempotente que permite al cliente enviar información al servidor.

Referencias:

  • RFC 2616 - HTTP 1.1
  • RFC 5789 - Método de parche para HTTP
  • Martin Fowler, el Modelo de Madurez de Richardson
+1

Aquí hay una expansión bastante buena de lo que dices: [PONER o PUBLICAR el resto de la historia] (http://jcalcote.wordpress.com/2008/10/16/put-or-post-the-rest -de la historia/). –

1

Puede enviar el cuerpo de la petición de la misma manera, es sólo controlan de forma diferente por el código de aplicación ...

El POST verbo se utiliza tradicionalmente para crear un recurso

El PUT el verbo se usa tradicionalmente para actualizar un recurso

+1

Interesante, he leído que POST se usa para actualizar y PUT se usa para crear, como en la respuesta aceptada aquí http://stackoverflow.com/questions/630453/put-vs-post- in -rest – DexCurl

+1

Es realmente una cuestión de convención en lugar de estándar, y no confiaría en encontrar una respuesta "aceptada" aquí como evidencia concreta de ** cualquier cosa ... http://stackoverflow.com/a/2447740/555384. ... si yo fuera tú, leería algunas apis populares y vería cómo lo hacen ... Creo que encontrarás esta respuesta como la más comúnmente aceptada. – jondavidjohn

2

Desde el punto de vista de HTTP, el formato de solicitud es el mismo.

0

PUT sube un nuevo recurso en el servidor. Si el recurso ya existe y es diferente, se reemplaza; si no existe, se crea.

POST desencadena una acción en el servidor. Tiene efectos secundarios y se puede utilizar para activar un pedido, modificar una base de datos, publicar un mensaje en un foro u otras acciones.