HTTP
Primera parte de Servicios Web|
Introducción a HTTP
HTTP (Hypertext Transfer Protocol) es un protocolo de comunicación que permite la transferencia de información en la web.
Es el protocolo que utilizan los navegadores web para solicitar y recibir páginas web desde los servidores.
HTTP define cómo se formatean y transmiten los mensajes, y cómo los servidores y navegadores deben responder a diversas solicitudes. Es un protocolo sin estado, lo que significa que cada solicitud se realiza de forma independiente, sin conservar información de solicitudes anteriores.
¿Para que nos servirá?
HTTP (Hypertext Transfer Protocol) es un protocolo de comunicación utilizado para transferir datos a través de la web. Es la base de cualquier intercambio de datos en la web y sigue un modelo de solicitud-respuesta entre un cliente y un servidor.
Cliente Web
Como cliente web, se puede utilizar cualquier navegador web, como Google Chrome, Mozilla Firefox, Safari, Microsoft Edge, etc. Estos navegadores son capaces de enviar solicitudes HTTP a servidores web y recibir respuestas de ellos.
- Utilizando el protocolo HTTP descarga los documentos en los diferentes formatos de la web (HTML, CSS, Javascript) así como los recursos asociados como fuentes, iconos o multimedia (imágenes – vídeos).
- Puede negociar algunas características particulares. Por ejemplo, si se soporta compresión o no.
- Interpreta la información en los documentos y renderiza el documento.
- Permite recoger información del usuario y enviarla al servidor como parámetros en una petición web GET o POST.
-
Gestiona las cookies que han sido enviadas por los servidores.
Servidor Web
Un servidor web, soporta el protocolo HTTP y es capaz de recibir solicitudes HTTP de los clientes y enviar respuestas a ellos.
Atiende a las peticiones del cliente.
De distintas formas, puede ejecutar las siguientes aplicaciones:
CGI: Common Gateway Interface.
PHP: Hypertext Preprocessor.
Python.

Java.
También podremos alterar el contenido con módulos como HTML, JavaScript y AYAX.
Ejemplos Servidores Web
Como servidor web, se puede utilizar cualquier servidor web, como Apache, Nginx, IIS, etc. Estos servidores son capaces de recibir solicitudes HTTP de los clientes y enviar respuestas a ellos.
- Recibe la petición del cliente.
- Busca el recurso solicitado.
- Procesa la petición.
- Envía la respuesta al cliente.
Métodos de petición HTTP
Los métodos de petición HTTP indican la acción que se desea realizar sobre el recurso identificado. Los más populares y usados son:
GET
Con el método GET, los datos que se envían al servidor se escriben en la misma dirección URL. En la ventana del navegador, lo encontrarás así:
https://www.ejemplo.com?nombre=Javier&apellido=Arias
Toda la información introducida por el usuario (los llamados “parámetros URL”) se transmiten tan abiertamente como el URL en sí mismo. Esto tiene ventajas y desventajas.
Ventajas de usar GET
Los parámetros URL se pueden guardar junto a la dirección URL como marcador. De esta manera, puedes introducir una búsqueda y más tarde consultarla de nuevo fácilmente. También se puede volver a acceder a la página a través del historial del navegador.
Esto resulta práctico, por ejemplo, si visitas con asiduidad un mismo lugar en Google Maps o si guardas páginas web con configuraciones de filtro determinadas.
Desventajas de usar GET
La mayor desventaja del método GET es su débil protección de los datos. Los parámetros URL que se envían quedan visibles en la barra de direcciones del navegador y son accesibles sin clave en el historial de navegación, en el caché y en el log de los servidores. Es una brecha de Seguridad.
Otra desventaja es que su capacidad es limitada: dependiendo del servidor y del navegador, no es posible introducir más de 2000 caracteres. Además, los parámetros URL solo pueden contener caracteres ASCII (letras, números, signos, etc.) y no datos binarios como archivos de audio o imágenes.
POST
El método POST introduce los parámetros en la solicitud HTTP para el servidor. Por ello, no quedan visibles para el usuario. Además, la capacidad del método POST es ilimitada.
Ventajas de usar POST
Al rellenar formularios con nombres de usuario y contraseñas, el método POST ofrece mucha discreción (seguridad).
Los datos no se muestran en la caché ni tampoco en el historial de navegación.
La flexibilidad del método POST también resulta muy útil: no solo se pueden enviar textos cortos, sino también otros tipos de información, como fotos o vídeos.
Desventajas de usar POST
Cuando una página web que contiene un formulario se actualiza (por ejemplo, cuando se retrocede a la página anterior) los datos del formulario deben transferirse de nuevo (puede que alguna vez hayas recibido una de estas advertencias). Por este motivo, existe el riesgo de que los datos se envíen varias veces por error, lo que, en el caso de una tienda online, puede dar lugar a pedidos duplicados. No obstante, las webs modernas de las tiendas suelen estar preparadas para evitar este tipo de problemas.
Además, los datos transferidos con el método POST no pueden guardarse junto al URL como marcador.
Además de éstos, también soporta los siguientes métodos:
- HEAD 🡺 Similar a GET, pero sin el cuerpo de respuesta.
- PUT 🡺 Crea un recurso en el servidor.
- DELETE 🡺 Elimina un recurso en el servidor.
- CONNECT 🡺 Convierte la solicitud en un túnel TCP/IP.
- OPTIONS 🡺 Devuelve los métodos HTTP que el servidor soporta.
- TRACE 🡺 Devuelve la solicitud tal y como la recibe el servidor.
- PATCH 🡺 Modifica parcialmente un recurso.
Códigos de estado
Debemos saber que cada petición envía un código de Estado.
Los más populares y los que más podrás ver, son:
| Código | Descripción |
|---|---|
| 200 | OK - La solicitud ha tenido éxito. |
| 201 | Created - La solicitud ha tenido éxito y se ha creado un nuevo recurso. |
| 204 | No Content - La solicitud ha tenido éxito pero no hay contenido que devolver. |
| 400 | Bad Request - La solicitud no se pudo entender o era incorrecta. |
| 401 | Unauthorized - La autenticación es necesaria y ha fallado o no se ha proporcionado. |
| 403 | Forbidden - El servidor ha entendido la solicitud pero se niega a autorizarla. |
| 404 | Not Found - El recurso solicitado no se ha encontrado. |
| 500 | Internal Server Error - Error genérico del servidor. |
| 502 | Bad Gateway - El servidor recibió una respuesta inválida del servidor ascendente. |
| 503 | Service Unavailable - El servidor no está disponible temporalmente. |