junio 13, 2024

¿Qué son los métodos HTTP y cómo puedes usarlos?

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 activo. 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, al igual que un verbo y un sustantivo sirven como un objeto.

La URL identifica un recurso único, que sirve 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:

 GET /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 ENVIAR, OBTENER, PONERY ELIMINAR.

OBTENER

La solicitud predeterminada más común que enviará cuando navegue por la web y haga clic en enlaces o solicite datos a través de una API. El servidor debe devolver el recurso en el cuerpo de la respuesta.

ENVIAR

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

PONER

Actualizar o reemplazar un activo existente. Es similar a POST, pero el cliente es responsable de elegir un identificador único para el recurso. Para crear un recurso usando PUT, la URL del recurso debe incluir un identificador, por ejemplo, /clientes/007.

ELIMINAR

Utilice este método para eliminar el recurso especificado en la URL. Como todos los métodos HTTP, el soporte depende del servidor. Puede permitir que cualquier persona elimine un activo, aunque hacerlo sería claramente arriesgado. Un servidor que admite DELETE generalmente requiere autenticación y autorización.

Otros dos métodos proporcionan ligeras variaciones de lo anterior: PARCHE Y CABEZA. Puede que le resulten útiles cuando utilice determinadas 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 deben actualizarse.

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á varios 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, CONECTARY RASTRO-Son más oscuros. Se ocupan de metadatos, redes y resolució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

Algunos 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. Tras la recepción, el servidor debe devolver la solicitud recibida en el cuerpo de respuesta. El método proporciona un mecanismo para verificar si las máquinas intermedias han cambiado los detalles de la solicitud.

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

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

La mayoría de las veces, los métodos HTTP serán transparentes para usted. Sin embargo, deberá tener esto en cuenta si agrega un formulario a una página web o utiliza una API.

Métodos HTTP en HTML

EL módulo 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 enviar Y Obtener valores para este atributo, además de una oscura alternativa de diálogo.

 <form method="post">
  ...
</form>

Puede usar funciones como Chrome Developer Tools para ver Neto tráfico y confirmar el método enviado por el navegador 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 porque simplemente obtienen los datos sin cambiarlos.

El panel de herramientas para desarrolladores de Chrome que muestra 3 solicitudes con diferentes métodos: POST, GET y PATCH

Dado que los datos POST no forman 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 podría 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. Si bien el acceso puede parecer más una operación de lectura que una creación o actualización, aún necesita usar POST para proteger sus 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:

 <form method="post">
  <input type="hidden" name="_method" value="DELETE" />
  ...
</form>

Su código del lado del servidor puede verificar esta variable de “método proxy” y tratarla como si fuera el método real que se está utilizando. Por ejemplo, en PHP:

 $method = $_SERVER["REQUEST_METHOD"];

if (array_key_exists("_method", $_REQUEST)) {
  $method = $_REQUEST["_method"];
}

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 compatibles con 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 pasado como segundo argumento.

 fetch('https://example.com/', { method: "HEAD" });

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

 if ($ch = curl_init($url)) {
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
    curl_exec($ch);
    
}

A través de la línea de comando

La herramienta de línea de comandos curl le permite transferir datos hacia o desde un servidor, utilizando 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 example.com/get-test

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

Un ejemplo de solicitud GET usando curl.

Puede cambiar el método de solicitud enviado por curl usando el indicador -X:

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

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

Un ejemplo de una solicitud POST usando curl.

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 sobre la que construir una API centrada en los recursos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *