POST

El método HTTP POST envía datos al servidor. El tipo del cuerpo de la solicitud es indicada por la cabecera  Content-Type.
La diferencia entre PUTPOST es que PUT es idempotente: llamarlo una o varias veces sucesivamente tiene el mismo efecto (no tiene efecto secundario // colateral), mientras que varios POST idénticos pueden tener efectos adicionales, como pasar una orden muchas veces.

Una solicitud POST es tipicamente enviada por un formulario HTML y resulta en un cambio en el servidor. En este caso, el tipo de contenido es seleccionado poniendo la cadena de texto adecuada en el atributo enctype del elemento <form> o el atributo formenctype  de los elementos <input><button> :

  • application/x-www-form-urlencoded: Los valores son codificados en tuplas llave-valor separadas por '&', con un '='  entre la llave y el valor. Caracteres no-Alfanumericos en ambas (llaves, valores) son percent encoded: Esta es la razón por la cual este tipo no es adecuado para usarse con datos binarios (use multipart/form-data en su lugar)
  • multipart/form-data: Cada valor es enviado como un dato de bloque ("input de un formulario"), con un delimitador como separador definido por el usuario ("espacio entre campos"). Éstas llaves son colocadas en el Content-Disposition , la cual es cómo está estructurada cada parte del HEADER en una petición HTTP
  • text/plain

Cuando la solicitud POST es enviada por otro método distinto a un formulario HTML  — por ejemplo mediante una XMLHttpRequest — el cuerpo puede aceptar cualquier tipo. Como se describe en la especificación HTTP 1.1, el método POST está diseñado para permitir un método uniforme que cubra las siguientes funciones:

  • Modificación de recursos existentes.
  • Publicar un mensaje en un tablón de anuncios, grupo de noticias, lista de correos, o grupos similares de artículos;
  • Agragar un nuevo usuario a través de un modal de suscripciones;
  • Proveer un conjunto de datos, como resultado del envío de un formulario, a un proceso data-handling.
  • Extender una base de datos a través de una operación de concatenación.
Pedir como cuerpo
Respuesta válida como cuerpo
Seguro No
Idempotente No
Cacheable Sólo si incluye nueva información
Permitido en HTML forms

Sintaxis

POST /index.html

Ejemplo

Un formulario simple empleando el tipo de contenido por defecto application/x-www-form-urlencoded:

POST / HTTP/1.1
Host: foo.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13

say=Hi&to=Mom

Un formulario usando el tipo de contenido multipart/form-data:

POST /test.html HTTP/1.1
Host: example.org
Content-Type: multipart/form-data;boundary="boundary"

--boundary
Content-Disposition: form-data; name="field1"

value1
--boundary
Content-Disposition: form-data; name="field2"; filename="example.txt"

value2

Especificaciones

Specification Title
RFC 7231, section 4.3.3: POST Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content

BCD tables only load in the browser

Ver también