Métodos de solicitud HTTP


¿Qué es HTTP?

El Protocolo de transferencia de hipertexto (HTTP) está diseñado para permitir las comunicaciones entre clientes y servidores.

HTTP funciona como un protocolo de solicitud y respuesta entre un cliente y un servidor.

Ejemplo: un cliente (navegador) envía una solicitud HTTP al servidor; luego el servidor devuelve una respuesta al cliente. La respuesta contiene información de estado sobre la solicitud y también puede contener el contenido solicitado.


Métodos HTTP

  • OBTENER
  • CORREO
  • PONER
  • CABEZA
  • ELIMINAR
  • PARCHE
  • OPCIONES

Los dos métodos HTTP más comunes son: GET y POST.


El método GET

GET se utiliza para solicitar datos de un recurso específico.

GET es uno de los métodos HTTP más comunes.

Tenga en cuenta que la cadena de consulta (pares de nombre/valor) se envía en la URL de una solicitud GET:

/test/demo_form.php?name1=value1&name2=value2

Algunas otras notas sobre las solicitudes GET:

  • Las solicitudes GET se pueden almacenar en caché
  • Las solicitudes GET permanecen en el historial del navegador
  • Las solicitudes GET se pueden marcar
  • Las solicitudes GET nunca deben usarse cuando se trata de datos confidenciales
  • Las solicitudes GET tienen restricciones de longitud
  • Las solicitudes GET solo se utilizan para solicitar datos (no modificar)

El método POST

POST se utiliza para enviar datos a un servidor para crear/actualizar un recurso.

Los datos enviados al servidor con POST se almacenan en el cuerpo de la solicitud HTTP:

POST /test/demo_form.php HTTP/1.1
Host: w3schools.com

name1=value1&name2=value2

POST es uno de los métodos HTTP más comunes.

Algunas otras notas sobre las solicitudes POST:

  • Las solicitudes POST nunca se almacenan en caché
  • Las solicitudes POST no permanecen en el historial del navegador
  • Las solicitudes POST no se pueden marcar
  • Las solicitudes POST no tienen restricciones en la longitud de los datos


El método PUT

PUT se utiliza para enviar datos a un servidor para crear/actualizar un recurso.

La diferencia entre POST y PUT es que las solicitudes PUT son idempotentes. Es decir, llamar a la misma solicitud PUT varias veces siempre producirá el mismo resultado. Por el contrario, llamar a una solicitud POST repetidamente tiene los efectos secundarios de crear el mismo recurso varias veces.


El método HEAD

HEAD es casi idéntico a GET, pero sin el cuerpo de respuesta.

En otras palabras, si GET /users devuelve una lista de usuarios, entonces HEAD /users realizará la misma solicitud pero no devolverá la lista de usuarios.

Las solicitudes HEAD son útiles para verificar qué devolverá una solicitud GET antes de realizar una solicitud GET, como antes de descargar un archivo grande o un cuerpo de respuesta.


El método DELETE

El método DELETE elimina el recurso especificado.


El Método OPCIONES

El método OPCIONES describe las opciones de comunicación para el recurso de destino.


Comparar GET y POST

La siguiente tabla compara los dos métodos HTTP: GET y POST.

  GET POST
BACK button/Reload Harmless Data will be re-submitted (the browser should alert the user that the data are about to be re-submitted)
Bookmarked Can be bookmarked Cannot be bookmarked
Cached Can be cached Not cached
Encoding type application/x-www-form-urlencoded application/x-www-form-urlencoded or multipart/form-data. Use multipart encoding for binary data
History Parameters remain in browser history Parameters are not saved in browser history
Restrictions on data length Yes, when sending data, the GET method adds the data to the URL; and the length of a URL is limited (maximum URL length is 2048 characters) No restrictions
Restrictions on data type Only ASCII characters allowed No restrictions. Binary data is also allowed
Security GET is less secure compared to POST because data sent is part of the URL

Never use GET when sending passwords or other sensitive information!
POST is a little safer than GET because the parameters are not stored in browser history or in web server logs
Visibility Data is visible to everyone in the URL Data is not displayed in the URL