# HTTP

> El idioma de pedido y respuesta que hablan los navegadores y los sitios web.

- Nivel: Básico
- Temas: Redes
- URL: https://tidbit.legios.com.ar/es/http/
- En inglés: [HTTP](https://tidbit.legios.com.ar/http/)

**HTTP** (HyperText Transfer Protocol) es el conjunto de reglas con el que un navegador y un servidor web se hablan. El navegador manda un **pedido** (dame esta página) y el servidor devuelve una **respuesta** (la página, o un error). Cada página, cada imagen y cada llamada a una API que usás corre sobre este ida y vuelta tan simple.

Un pedido tiene un método y una ruta. `GET /menu` significa traeme el menú; `POST /pedido` significa acá van datos, creá un pedido. La respuesta arranca con un código de estado: `200` es todo bien, `404` es no encontrado, `500` es que el servidor se rompió. Los dos llevan **headers**, notitas como el tipo de contenido, el idioma o una cookie que te identifica.

HTTP no tiene memoria: cada pedido va solo, y el servidor no recuerda el anterior, por eso existen las cookies y las sesiones. El HTTP pelado lo puede leer cualquiera que esté en el medio, así que hoy casi todo usa HTTPS, que es la misma conversación dentro de un túnel cifrado. Las versiones nuevas (HTTP/2 y HTTP/3) hacen el intercambio más rápido sin cambiar lo que pedís.

## Una analogía

Pedir en un mostrador con número. Decís lo que querés con una fórmula fija, recibís el plato o un no nos queda, y el mostrador no se acuerda de vos entre pedido y pedido.

## Para quedarse

- Un pedido tiene un método (`GET`, `POST`...) y una ruta; una respuesta tiene un código (`200`, `404`, `500`).
- HTTP no guarda estado: las cookies son la forma en que un sitio te recuerda entre pedidos.
- HTTPS es HTTP con cifrado; la conversación es la misma, solo que protegida.
- La mayoría de las APIs de la web son pedidos HTTP que devuelven JSON en vez de páginas.

## Para seguir leyendo

- [Generalidades del protocolo HTTP (MDN)](https://developer.mozilla.org/es/docs/Web/HTTP/Guides/Overview)
- [¿Qué es HTTP? (Cloudflare)](https://www.cloudflare.com/es-es/learning/ddos/glossary/hypertext-transfer-protocol-http/)
- [Protocolo de transferencia de hipertexto (Wikipedia)](https://es.wikipedia.org/wiki/Protocolo_de_transferencia_de_hipertexto)

## Términos relacionados

- [Navegador web](https://tidbit.legios.com.ar/es/web-browser/): La app que trae páginas web desde internet y las dibuja en tu pantalla.
- [Servidor](https://tidbit.legios.com.ar/es/server/): Una computadora cuyo trabajo es responder pedidos de otras computadoras, todo el día.
- [API](https://tidbit.legios.com.ar/es/api/): El menú de cosas que un programa le deja pedir a otro programa.
- [Cookies](https://tidbit.legios.com.ar/es/cookies/): Notitas que un sitio le pide a tu navegador que guarde, para reconocerte después.
- [HTTPS](https://tidbit.legios.com.ar/es/https/): El candadito del navegador: tráfico web que nadie en el medio puede leer.
- [Cifrado](https://tidbit.legios.com.ar/es/encryption/): Mezclar datos para que solo quien tiene la clave pueda leerlos.
- [JSON](https://tidbit.legios.com.ar/es/json/): El formato de texto con el que los programas se pasan datos estructurados.
