Servir JSON (construye una API)
Haz que tu servidor hable el idioma de internet
⏱ Estim. ~7 min
01 · Leer
Hasta ahora, tus rutas usan res.send() para devolver texto plano. Está bien para mensajes simples, pero las APIs reales no devuelven texto plano — devuelven JSON.
¿Te acuerdas de JSON del nivel 5? Es el formato universal de datos en internet. Cuando tu celular revisa el clima, un sitio carga tu perfil, una app trae publicaciones nuevas — todos esos datos se transmiten en JSON.
Express lo hace súper fácil. En vez de res.send(), usas res.json() y le pasas un objeto de JavaScript. Express automáticamente lo convierte a JSON y agrega los headers correctos para que navegadores y apps sepan cómo leerlo.
Puntos clave
- res.send() devuelve texto plano
- res.json() devuelve datos JSON — el estándar de las APIs
- Express maneja automáticamente la conversión de objetos de JavaScript a JSON
- Así funciona detrás de cámaras cada API que usaste
02 · Práctica real
Agrega una nueva ruta JSON a tu app.js. Esta ruta devuelve la hora y fecha actuales como datos estructurados. Ponla junto a las otras rutas (antes de app.listen()).
app.get('/api/time', (req, res) => {
res.json({
time: new Date().toLocaleTimeString(),
date: new Date().toLocaleDateString()
});
});03 · Quiz
¿Cuál es la diferencia entre res.send() y res.json()?
- res.send() es más rápido que res.json()
- res.json() solo funciona con arreglos
- No hay diferencia
- res.send() devuelve texto plano, res.json() devuelve datos JSON estructurados
04 · Práctica real
Detén el servidor con Ctrl+C y reinícialo, luego visita la nueva ruta en el navegador. Deberías ver datos JSON con la hora y fecha actuales — no texto plano, sino datos estructurados con llaves y pares clave-valor.
node app.js
http://localhost:3000/api/time
05 · Completar
Para devolver datos JSON en Express, usas res._____() en lugar de res.send().
06 · Leer
Tu servidor ahora habla JSON — el mismo idioma que cada API en internet.
Refresca la página varias veces. ¿Notaste que la hora cambia con cada petición? Eso es porque tu servidor vuelve a correr el código cada vez que alguien entra a la URL. Es dinámico — genera la respuesta según el momento exacto.
Esa es la diferencia entre un sitio estático (mismo contenido cada vez) y una API (el contenido cambia según los datos, la hora, el usuario o lo que sea).
¿Te acuerdas de las APIs y JSON del nivel 5? Ahora estás del otro lado de esa conversación. No solo estás usando APIs — estás haciendo una API.
07 · Quiz
¿Por qué el endpoint /api/time devuelve una hora distinta cada vez que refrescas?
- El servidor vuelve a correr new Date() en cada petición, así que siempre devuelve la hora actual
- El navegador cachea distintas versiones de la página
- Express genera timestamps aleatorios para cada respuesta
- El formato JSON actualiza los timestamps automáticamente
Otras lecciones de este capítulo
⚠ La experiencia interactiva completa necesita JavaScript. Actívalo y vuelve a cargar la página.
※ Este es un proyecto educativo independiente — no es un producto oficial de Anthropic. Claude™ es una marca registrada de Anthropic, PBC.