Es posible que haya oído hablar de las solicitudes GET y POST, pero son solo el comienzo.

Cada solicitud HTTP utiliza un método para describir su propósito esencial. Cada método tiene usos específicos para tareas que van desde buscar una página web hasta eliminar un recurso. GET y POST son los dos más familiares, pero hay otros siete.

Aprende sobre este concepto y para qué sirve cada uno de los nueve posibles métodos HTTP.

¿Qué es un método HTTP?

Cada solicitud HTTP que realiza incluye una acción y un objetivo para esa acción, como un verbo y un sustantivo que actúa como un objeto.

La URL identifica un recurso único, que actúa como destino de la solicitud. Mientras tanto, el verbo, qué acción realizar en esa URL, se representa mediante un método.

La primera línea de una solicitud HTTP proporciona la información más importante, incluida la versión HTTP, la URL del recurso y el método de solicitud:

OBTENER /software/htp/cics/index.html HTTP/1.1

¿Cuáles son los 9 métodos HTTP?

Los primeros cuatro métodos son equivalentes a las cuatro acciones del modelo CRUD: Crear, Leer, Actualizar y Eliminar. Los respectivos métodos HTTP son

instagram viewer
CORREO, CONSEGUIR, PONER, y BORRAR.

CONSEGUIR

La solicitud predeterminada más común que enviará al navegar por la web y hacer clic en enlaces o solicitar datos a través de una API. El servidor debe devolver el recurso en su cuerpo de respuesta.

CORREO

Utilice POST para crear nuevos recursos, especialmente cuando esos recursos tienen un recurso principal identificable. Por ejemplo, si tiene un recurso /clients, debe crear un nuevo cliente enviando por POST los datos requeridos a /clients.

PONER

Actualice o reemplace un recurso existente. Esto es similar a POST, pero el cliente es responsable de elegir un identificador único para el recurso. Para crear un recurso mediante PUT, la URL del recurso debe incluir un identificador, por ejemplo, /clients/007.

BORRAR

Utilice este método para eliminar el recurso que especifique en la URL. Como todos los métodos HTTP, el soporte depende del servidor. Puede permitir que cualquiera elimine un recurso, aunque eso sería claramente arriesgado. Un servidor que admita DELETE generalmente requerirá autenticacion y autorizacion.

Otros dos métodos proporcionan ligeras variaciones sobre lo anterior: PARCHE y CABEZA. Puede encontrarlos útiles al usar ciertas API o si está creando las suyas propias.

PARCHE

El método PATCH actualiza un recurso existente, con solo datos parciales. En otras palabras, no necesita proporcionar la representación completa del nuevo recurso, solo los campos que necesita actualizar.

CABEZA

Una solicitud HEAD es para cuando desea información sobre un recurso, pero no sobre el recurso en sí. La respuesta no incluirá un cuerpo, pero contendrá un conjunto de encabezados HTTP útiles. Puede averiguar el tamaño total de un archivo antes de descargarlo, a través del encabezado de respuesta Content-Length.

Los métodos restantes—OPCIONES, CONECTAR, y RASTRO—son más oscuros. Se ocupan de metadatos, redes y solución de problemas. Puede encontrarlos útiles en ciertos tipos de programación, pero probablemente no los usará todos los días.

OPCIONES

Un servidor debe responder a este método diciéndole qué métodos HTTP admite realmente el recurso. Esto puede ser útil para el descubrimiento.

CONECTAR

Ciertos tipos de software de red pueden usar este método para establecer un túnel entre dos computadoras. Esto se usa a menudo para iniciar una conexión HTTPS a través de un proxy.

RASTRO

Este método es útil para solucionar problemas. Al recibirlo, el servidor debe devolver la solicitud que recibió en el cuerpo de la respuesta. El método proporciona un mecanismo para verificar si las máquinas intermedias han cambiado algún detalle de la solicitud.

GET y HEAD son los dos únicos métodos compatibles con todos los servidores web generales. Un servidor en particular puede o no admitir otros métodos, por lo que debe verificar primero.

¿Cuándo podría usar estos métodos?

La mayor parte del tiempo, los métodos HTTP serán transparentes para usted. Sin embargo, deberá considerarlos si agrega un formulario a una página web o usa una API.

Métodos HTTP en HTML

El forma elementos método El atributo le permite configurar el método HTTP para usar cuando se envía el formulario. HTML solo es compatible con correo y conseguir valores para este atributo, además de una oscura alternativa de diálogo.

<formamétodo="correo">
...
forma>

Puede utilizar funciones como Herramientas para desarrolladores de Chrome para ver Red tráfico y confirme el método que su navegador envía para una solicitud en particular. Tenga en cuenta que la mayoría de los formularios web enviarán un POST, ya que normalmente actualizan los datos en el servidor. Sin embargo, muchos formularios de búsqueda usan GET ya que simplemente obtienen datos sin cambiarlos.

Debido a que los datos POST no son parte de la URL, son más privados que si los envía a través de GET. Los datos aún existen en el cuerpo de la solicitud donde, en teoría, un atacante puede interceptarlos. Pero el envío de datos a través de HTTPS debería mitigar este problema.

Nunca debe implementar un inicio de sesión de usuario con solicitudes GET. Aunque el inicio de sesión puede parecer más una operación de lectura que una creación o actualización, aún necesita usar POST para proteger los datos.

Dado que los formularios HTML solo admiten GET y POST, no puede crear directamente un formulario que, por ejemplo, elimine un recurso en el servidor. Una solución común, que respeta los principios REST en el servidor, es usar una variable de marcador de posición y fingir que era el método HTTP original. Por ejemplo:

<formamétodo="correo">
<aportetipo="oculto"nombre="_método"valor="BORRAR" />
...
forma>

Su código del lado del servidor puede verificar la presencia de esta variable de "método proxy" y tratarla como si fuera el método real utilizado. Por ejemplo, en PHP:

$método = $_SERVIDOR["REQUEST_METHOD"];

si (matriz_clave_existe("_método", $_SOLICITUD)) {
$método = $_SOLICITUD["_método"];
}

Envío de solicitudes HTTP mediante programación

La Web Fetch API proporciona una función de JavaScript fetch() que puede usar para enviar una solicitud HTTP. Admite la gama completa de métodos, no solo GET y POST que admite HTML.

La función de búsqueda enviará una solicitud GET de forma predeterminada. Para usar un método diferente, especifique su nombre como el valor para un método propiedad en un objeto que envíe como segundo argumento.

buscar(' https://example.com/', { método: "CABEZA" });

También puede enviar solicitudes HTTP desde muchos idiomas del lado del servidor, incluido PHP. En ese idioma, la biblioteca curl es una forma común de enviar tales solicitudes.

La biblioteca curl tiene una opción CURLOPT_CUSTOMREQUEST que puede configurar para especificar un método

si ($ch = curl_init($url)) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PONER');
curl_exec($ch);
// ...
}

A través de la línea de comandos

La herramienta de línea de comando curl le permite transferir datos hacia o desde un servidor, a través de uno de varios protocolos. HTTP (y HTTPS) son dos casos de uso muy comunes.

Por defecto, curl envía una solicitud GET, como puedes confirmar con el siguiente comando:

curl -v -s -o /dev/null ejemplo.com/get-test

Puede ver el método de solicitud en la quinta línea de la salida:

Puede cambiar el método de solicitud que curl envía usando el indicador -X:

curl -v -s -o /dev/null ejemplo.com/get-test -X POST

Ahora, curl envía una solicitud usando el método POST:

HTTP tiene muchos usos

La mayor parte de lo que hace en la web involucrará solicitudes GET estándar, con POST ocasional para envíos de formularios. Pero HTTP es un protocolo mucho más expresivo de lo que esto sugiere.

Algunos de los métodos más comunes reflejan el modelo CRUD, lo que hace que HTTP sea una base excelente para construir una API centrada en los recursos.