PUT vs POST: diferencia entre ellos
Diferencias clave entre PUT y POST
- El método PUT se llama cuando tiene que modificar un solo recurso, mientras que el método POST se llama cuando tiene que agregar un recurso secundario.
- Las respuestas del método POST se pueden almacenar en caché, pero no se pueden almacenar en caché las respuestas del método PUT.
- Puede utilizar la consulta ACTUALIZAR en PUT, mientras que puede utilizar la consulta Crear en POST.
- En el método PUT, el cliente decide qué recurso URI debe tener, y en el método POST, el servidor decide qué recurso URI debe tener.
- PUT funciona como específico, mientras que POST funciona como abstracto.
- Si envía la misma solicitud PUT varias veces, el resultado seguirá siendo el mismo, pero si envía la misma solicitud POST varias veces, recibirá resultados diferentes.
- El método PUT es idempotente, mientras que el método POST no es idempotente.

¿Qué es el método PUT?
El método PUT se utiliza para actualizar los recursos disponibles en el servidor. Normalmente, reemplaza lo que existe en la URL de destino con otra cosa. Puede usarlo para crear un nuevo recurso o sobrescribir uno existente. PUT solicita que la entidad adjunta se almacene bajo el URI (Identificador uniforme de recursos) solicitado proporcionado.
¿Qué es el método POST?
POST es un método compatible con HTTP y
Representa que un servidor web acepta los datos incluidos en el cuerpo del mensaje que se solicita. La World Wide Web suele utilizar POST para enviar datos generados por el usuario al servidor web o cuando se carga un archivo.
Diferencias entre PUT y POST en las API REST
Aquí está la diferencia importante entre el método PUT y POST:
PUT | PUBLICAR |
---|---|
Este método es idempotente. | Este método no es idempotente. |
El método PUT se llama cuando tiene que modificar un único recurso, que ya forma parte de la colección de recursos. | El método POST se llama cuando tiene que agregar un recurso secundario en la colección de recursos. |
RFC-2616 describe que el método PUT envía una solicitud para una entidad adjunta almacenada en el URI de solicitud proporcionado. | Este método solicita al servidor que acepte la entidad incluida en la solicitud. |
La sintaxis del método PUT es PUT /questions/{question-id} | La sintaxis del método POST es POST /preguntas |
No puede almacenar en caché las respuestas del método PUT. | La respuesta del método POST se puede almacenar en caché. |
PUT /vi/juice/orders/1234 indica que está actualizando un recurso identificado por “1234”. | POST /vi/juice/orders indica que está creando un nuevo recurso y devuelve un identificador para describir el recurso. |
Si envía la misma solicitud varias veces, el resultado seguirá siendo el mismo. | Si envía la misma solicitud POST más de una vez, recibirá resultados diferentes. |
PUT funciona de forma específica. | POST trabajo como resumen. |
Usamos la consulta ACTUALIZAR en PUT. | Usamos crear consulta en POST. |
En el método PUT, el cliente decide qué recurso URI debe tener. | En el método POST, el servidor decide qué recurso URI debe tener. |
Ejemplo de poner
Aquí está el ejemplo de servidor web de un método PUT:
HTTP PUT http://www.google.com/users/234
HTTP PUT http://www.google.com/users/234/accounts/567
Solicitar retiro
PUT /new.html HTTP/1.1 Host: example.com Content-type: text/html Content-length: 20 <p>New File</p>
Respuestas
Si el recurso de destino tiene representación actual y se modifica con el estado de la representación adjunta, entonces el servidor debe enviar dos respuestas. El primer código de respuesta es 200 (OK) y el segundo código de respuesta es 204 (Sin contenido).
Si el recurso de destino no tiene ninguna representación, entonces el servidor debe informar al usuario enviando una respuesta de código 201 (Creado).
HTTP/1.1 201 Created Content-Location: /new.html
Ejemplo de ENVÍO
A continuación se muestra un ejemplo del método POST:
POST HTTP http://www.google.com/users
POST HTTP http://www.google.com/users/234/accounts
Un formulario que utiliza el tipo de contenido predeterminado application/x-www-form-urlencoded:
POST /test HTTP/1.1 Host: abc.example Content-Type: application/x-www-form-urlencoded Content-Length: 40 field1=value1&field2=value2
Probando una API con solicitudes PUT
Estos son los pasos para probar la API con solicitudes PUT:
Paso 1) Actualizar recursos con solicitud PUT.
Paso 2) Utilice el método GET para el recurso. Si la solicitud PUT tiene éxito, recibirá nuevos datos. Este método fallará si los datos proporcionados en la solicitud no son válidos. Por tanto, no actualizará nada.
Probando una API con solicitudes POST
Estos son los pasos para probar la API con solicitudes POST:
Paso 1) Cree un recurso mediante la solicitud POST y asegúrese de que devuelva el código de estado 200.
Paso 2) Realice una solicitud GET para ese recurso y guarde los datos en el formato correcto.
Paso 3) Debe agregar pruebas que garanticen que las solicitudes POST fallen con datos incorrectos.
Ventajas del método PUT
Aquí hay ventajas y beneficios de usar el método PUT:
- Le ayuda a almacenar la entidad proporcionada bajo el URI proporcionado
- Si la entidad suministrada ya existe, puede realizar la operación de actualización o puede crearla con esa URI.
- Puedes crear un recurso tantas veces como quieras.
- Crear un recurso con el método PUT es muy sencillo.
- No es necesario comprobar si el usuario ha hecho clic en el botón Enviar varias veces o no.
- Puede identificar la entidad adjunta a la solicitud.
Ventajas del método POST
Aquí hay ventajas y beneficios de usar el método POST:
- Este método le ayuda a determinar el URI del recurso.
- Especificar un nuevo encabezado de ubicación de recurso es muy fácil usando el encabezado de ubicación.
- Puede enviar una solicitud para aceptar la entidad como un nuevo subordinado del recurso, que se identifica mediante el URI.
- Puede enviar datos generados por el usuario al servidor web.
- Es muy útil cuando no conoces la URL para conservar algún recurso.
- Utilice POST cuando necesite el servidor, que controla la generación de URL de sus recursos.
- POST es un método seguro ya que sus solicitudes no permanecen en el historial del navegador.
- Puede transmitir sin esfuerzo una gran cantidad de datos mediante la publicación.
- Puede mantener los datos privados.
- Este método se puede utilizar para enviar datos binarios y ASCII.