Cuando programas un servidor con Node.js y Express, entender cómo viaja la información entre cliente y servidor es tan importante como escribir el código. Aquí aprenderás qué es una URI, cómo se compone una URL, qué hacen los puertos y cuáles son los verbos HTTP que usarás en cada petición de tus proyectos backend.
¿Qué es una URI y en qué se diferencia de una URL?
Cada vez que abres una página en tu navegador, lo haces a través de una dirección electrónica que la computadora interpreta como un identificador único.
Una URI (Uniform Resource Identifier) es la forma en la que te conectas a cualquier sitio mediante un identificador. Y aquí viene lo interesante: una URI se compone de dos partes complementarias.
- URL (Uniform Resource Locator): la localización exacta de un recurso.
- URN (Uniform Resource Name): el nombre del recurso, sin indicar dónde está ubicado.
Juntas, URL y URN forman una URI completa.
¿URL y URI son lo mismo? No. La URL es solo una parte de la URI. La URI engloba tanto la URL (ubicación) como la URN (nombre del recurso).
¿Cómo se compone la estructura de una URL?
Tomando como ejemplo una dirección de Platzi explicada en el minuto [2:10], puedes dividir cualquier dirección web en bloques con funciones específicas.
¿Qué función cumple cada parte de la URL?
- Esquema: define el estándar de comunicación. Puede ser http, https, ftp, entre otros. Le indica a la computadora qué forma tendrán los mensajes intercambiados.
- Autoridad o dominio: el sitio al que te conectas, como platzi.com. Equivale a una IP y, cuando hablas de tu propia máquina, se llama localhost.
- Puerto: el número que identifica a cuál de los programas en ejecución te quieres conectar.
- Ruta: el recurso específico que quieres obtener, por ejemplo /search.
- Cadena de búsqueda: parámetros opcionales para filtrar datos, como buscar todos los cursos de JavaScript.
- URN: se separa con el símbolo # y apunta a un recurso con nombre dentro de la página, por ejemplo title.
Esta estructura es la que le dice al navegador, con precisión quirúrgica, qué estás buscando.
¿Para qué sirven los puertos en un servidor local?
Tu computadora, al ser un servidor en sí misma cuando trabajas en localhost, puede tener muchos puertos abiertos al mismo tiempo. Cada puerto se dedica a un programa distinto.
La industria acordó ciertos estándares para puertos comunes que aparecen explicados alrededor del minuto [4:30]:
- Puerto 80: por defecto para http, no necesitas escribirlo.
- Puerto 443: por defecto para https (la S de seguridad), tampoco se escribe.
- Puerto 587: típico de clientes de correo.
- Puerto 8080: el que usarás en tus proyectos de Node.js, y sí debes escribirlo porque no es el puerto por defecto.
¿Por qué uso el puerto 8080 en Node.js? Porque no es un puerto reservado por defecto para HTTP o HTTPS. Al escribirlo de forma explícita, le indicas al navegador que se conecte a tu servidor de Express.js y no a otro programa.
Piensa en los puertos como números de extensión telefónica: el dominio localhost es el edificio, y el puerto 8080 es la oficina específica donde vive tu proyecto de Node.js.
¿Qué son los verbos HTTP y cuándo usar GET o POST?
El protocolo HTTP te permite hacer peticiones y recibir respuestas, pero no todas las peticiones tienen el mismo propósito. Por eso existen los verbos HTTP, que indican qué tipo de acción quieres ejecutar sobre un recurso.
Los dos más usados, presentados en el minuto [6:15], son:
- GET: solicita un recurso al servidor. Por ejemplo, acceder a /cursos devuelve la lista de cursos disponibles.
- POST: envía datos al servidor. Se usa, por ejemplo, cuando publicas un comentario o inicias sesión.
¿Por qué POST es más seguro que GET para datos sensibles?
Las peticiones GET viajan en la URL del navegador y quedan visibles en el historial. Las peticiones POST viajan en segundo plano, lo que permite enviar contraseñas, comentarios o datos privados sin exponerlos en la barra de direcciones.
¿Cuándo debo usar POST en lugar de GET? Usa POST cuando envías información que modifica el estado del servidor o que es sensible, como un login. Usa GET cuando solo quieres leer o consultar un recurso.
Existen más verbos HTTP, como PUT, DELETE o PATCH, cada uno con propósitos distintos. Si ya conoces alguno o lo has usado en otro proyecto, compártelo en los comentarios y comenta qué caso de uso te ha funcionado mejor.