CodeAventura
Node.js
▸Tu primera API▸Tu primer servidor HTTP

Misión

// Importa el módulo http
// Crea un servidor que responda con un mensaje
// Ponlo a escuchar en un puerto
// Ejecuta: node index.js

TerminalTema: Vintage
14 / 15Tu primer servidor HTTP
Anterior

Tu primer servidor HTTP

De scripts a servidor

Hasta ahora, tus programas en Node.js se ejecutan, hacen algo y terminan. Un servidor es diferente: se ejecuta y se queda esperando. Esperando peticiones.

Cada vez que abres una página web, tu navegador envía una petición HTTP a un servidor. El servidor la recibe, la procesa y devuelve una respuesta. Eso es todo lo que hace un servidor web: recibir preguntas y dar respuestas.

Y con Node.js, puedes construir uno en pocas líneas.

El módulo http

Node.js incluye un módulo llamado http que te da todo lo necesario para crear un servidor, sin instalar nada externo:

Escribe esto en el editor, ejecuta node index.js en la terminal, y tu servidor estará vivo. Cada vez que alguien visite http://localhost:3000, recibirá el mensaje "¡Hola desde mi servidor!".

Desmenuzando el código

http.createServer(callback)

Crea un servidor. El callback se ejecuta cada vez que llega una petición. Recibe dos parámetros:

  • req (request): información sobre lo que pide el cliente (URL, método, headers...)
  • res (response): el objeto que usas para enviar la respuesta

res.end(texto)

Envía la respuesta al cliente y cierra la conexión. Es como decir "aquí tienes tu respuesta, hemos terminado".

server.listen(puerto, callback)

Le dice al servidor que empiece a escuchar conexiones en el puerto indicado. El callback es opcional — se ejecuta cuando el servidor está listo.

¿Qué es un puerto?

Piensa en un puerto como la puerta de un edificio. Tu máquina puede tener muchos programas escuchando al mismo tiempo, cada uno en un puerto diferente:

  • Puerto 3000: tu servidor Node.js
  • Puerto 5432: una base de datos PostgreSQL
  • Puerto 80: servidor web en producción

localhost significa "esta máquina". Así que http://localhost:3000 significa "conéctate al programa que está escuchando en el puerto 3000 de este ordenador".

Respondiendo con más detalle

Puedes (y deberías) enviar más información en la respuesta, no solo texto:

writeHead establece el código de estado y las cabeceras de la respuesta:

CódigoSignificado
200Todo bien
404No encontrado
500Error del servidor

Las cabeceras le dicen al navegador qué tipo de contenido estás enviando. text/plain es texto simple. Pronto veremos application/json para APIs.

Tu servidor nunca termina (y eso es bueno)

Observa que después de ejecutar node index.js, la terminal no vuelve al prompt. El programa sigue corriendo, esperando peticiones. Eso es normal — un servidor está diseñado para funcionar continuamente.

Para detenerlo, presiona Ctrl + C en la terminal. Eso envía una señal de terminación al proceso.

Tu desafío 🚀

  1. Importa el módulo http
  2. Crea un servidor con createServer que responda con un mensaje de texto
  3. Ponlo a escuchar en un puerto con .listen()
  4. Termina la respuesta con res.end()
  5. Ejecuta node index.js en la terminal

Acabas de crear tu primer servidor web. Lo que parecía magia — un programa que responde cuando lo visitas desde el navegador — resulta que son unas pocas líneas de JavaScript.