# HTTP/Mensajes/Peticiones

Para realizar solicitudes a un servidor por medio del protocolo HTTP, es obligatorio el uso de unos métodos que vienen pre-definidos en este protocolo los cuales le indican al servidor cual es la acción que se desea realizar sobre uno o varios recursos en concreto, a estos métodos también se les conoce por el nombre de “verbos”.
En la versión 1.0 de HTTP se definieron los 3 primeros métodos de este protocolo:
Este método se utiliza es cuando se necesita adquirir un archivo o recurso que se encuentran en un servidor web, este método devuelve tanto las cabecera que contienen los metadatos del recurso solicitado y el recurso en si.
Este método realiza una acción similar al método GET solo que a diferencia de este HEAD solo solicita los metadatos de un recurso o archivo y no todo elemento como tal.
Este método se usa cuando se necesita enviar información o un elemento al servidor y que lo enviado sea almacenado como un “hijo” o subelemento de un elemento o recurso ya existentes en el servidor. Este método se usa para enviar información a un recurso web del servidor mas no para cargar/crear un elemento nuevo como tal. Este tipo de método se usa principalmente en el envío de formularios que se encuentran en las páginas web.
A partir de la versión 1.1 de HTTP se agregaron otros 5 métodos nuevos adicionales:
Sirve para averiguar que métodos HTTP soporta el servidor web con respecto a un recurso en concreto o en caso de que haya un * en la URI se devuelven todos los métodos soportados por el servidor.
Crea/Carga un nuevo recurso al servidor, o en caso de que el objeto ya exista en el servidor reemplaza el recurso existente con el recurso que se carga.
Este método le solicita al servidor web que se borre un recurso en específico.
Este método Permite monitorear los mensajes que hay entre el cliente y el servidor web. Principalmente se usa con propósitos de diagnósticos de fallas o para revisar si existen servidores intermediarios en la conexión.
Este método se utiliza para para solicitar una conexión de tipo túnel TCP/IP. Principalmente se utiliza cuando se necesita utilizar un proxy para una conexión segura cifrada HTTPS o para comunicaciones vía SSL.
Cabe aclarar que cualquier cliente web puede hacer uso de estos métodos y que adicionalmente se puede configurar un servidor web para que reciba cualquier combinación de ellos. Adicionalmente han surgido nuevos métodos para suplir ciertas necesidades específicas que se tenían del software, algunos ejemplos de estos serían los Métodos definidos en la extensión de HTTP llamada WebDAV (Web Distributed Authoring and Versioning) creada por un grupo de trabajo de la Internet Engineering Task Force (IETF) que tenía el mismo nombre y el método PATCH, creado por la IETF, el cual sirve para aplicar modificaciones parciales a un recurso.
Los métodos HTTP más usados en la actualidad y que conforman la mayoría de las peticiones en la red, son: GET, PUT, DELETE, POST y HEAD siendo GET y POST los métodos principales de las comunicaciones en la red.

## El método GET y la seguridad

Pide una representación del recurso especificado. Por seguridad no debería ser usado por aplicaciones que causen efectos ya que transmite información a través de la URI agregando parámetros a la URL. El método GET se emplea para leer una representación de un recurso (resource). En caso de respuesta positiva (200 OK), GET devuelve la representación en un formato concreto: HTML, XML, o imágenes, , CSS, etc. En caso de respuesta negativa devuelve 404 (not found) o 400 (bad request). Por ejemplo en la carga de una página web, primero se carga la url solicitada
* GET php.net/docs HTTP/1.1
En este caso devolverá HTML. Y después los demás recursos (resources) como CSS, JS, o imágenes:
* GET php.net/images/logo.png HTTP/1.1
Los formularios también pueden usarse con el método GET La URL completa después de cargar todos los métodos GET quedaría de la siguiente manera
* GET ejem-plo.com/formget.php?nombre=pepe&email=pepe%40ejemplo.com HTTP/1.1

### Ejemplo GET

Tanto GET como POST son métodos de envío de información de formularios válidos y utilizados. Cada uno de los métodos tiene sus ventajas y sus inconvenientes y no se puede decir que uno sea mejor que otro. Elegir entre un método y otro depende de la aplicación concreta a la que se aplicará, por ejemplo si solo deseamos obtener información de cualquier tipo el GET será nuestro mejor aliado, o bien sea para un inicio de sesión o un resgistro de credenciales el método POST se ajustará de una manera válida; y es algo que dentro de las empresas de desarrollos web suelen decidir los encargados del diseño de las aplicaciones. A nosotros en este apartado básico simplemente nos interesa conocer la existencia de ambos métodos y sus características.
GET lleva los datos de forma "visible" al cliente (navegador web). El medio de envío es la URL. Los datos los puede ver cualquiera. Ejemplo: <form action="http://httpbin.org/image/webp" method ="get">
Los datos son visibles por la URL, por ejemplo:
* httpbin.org
* Tanto GET como POST son métodos de envío de información de formularios válidos y utilizados. Cada uno de los métodos tiene sus ventajas y sus inconvenientes y no se puede decir que uno sea mejor que otro. Elegir entre un método y otro depende de la aplicación concreta a la que se aplicará, por ejemplo si solo deseamos obtener información de cualquier tipo el GET será nuestro mejor aliado, o bien sea para un inicio de sesión o un resgistro de credenciales el método POST se ajustará de una manera válida; y es algo que dentro de las empresas de desarrollos web suelen decidir los encargados del diseño de las aplicaciones. A nosotros en este apartado básico simplemente nos interesa conocer la existencia de ambos métodos y sus características.
* GET lleva los datos de forma "visible" al cliente (navegador web). El medio de envío es la URL. Los datos los puede ver cualquiera.
* Ejemplo:
<form action="http://httpbin.org/image/webp" method ="get">
* Los datos son visibles por la URL, por ejemplo:
* httpbin.org

### Ejemplo POST

POST consiste en datos "ocultos" (porque el cliente no los ve) enviados por un formulario cuyo método de envío es post. Es adecuado para formularios. Los datos no son visibles. Ejemplo: <form action="http://httpbin.org/forms/post" method ="post">
La ventaja de usar POST es que estos datos no son visibles al usuario de la web. En el caso de usar get, el propio usuario podría modificar la URL escribiendo diferentes parámetros a los reales en su navegador, dando lugar a que la información tratada no sea la prevista.

## Fuentes:

* -- GET Y POST (VS) Formularios y Peticiones GET Sobre los métodos y los recursos Encabezados de Petición