Instala Express y estructura tu primer servidor con rutas, parámetros de URL y middleware.
Abrir esta lección en KodokonYa sabes cómo arrancar un servidor con el módulo nativo http: ahí todo es manual, desde leer la URL hasta ensamblar las cabeceras. Express es el framework que estandarizó el desarrollo web del lado de Node: enrutamiento, middleware, una API concisa, sin ocultar nada del protocolo. Crea un proyecto e instálalo.
mkdir kodokon-api
cd kodokon-api
npm init -y
npm install expressAñade la propiedad type con el valor module a tu package.json: todo el proyecto usará módulos ES. Luego crea server.js. Bastan unas pocas líneas para tener un servidor funcional: creas la aplicación, declaras una ruta y escuchas en un puerto.
import express from "express";
const app = express();
app.get("/", (req, res) => {
res.send("Kodokon API online");
});
app.listen(3000, () => {
console.log("http://localhost:3000");
});Una ruta asocia un método HTTP y un path a una función. Los segmentos dinámicos se declaran con dos puntos: en /users/:id, el valor está disponible en req.params.id. Los parámetros de consulta (?q=node) aparecen en req.query. Ten presente la distinción: el path identifica el recurso, la cadena de consulta afina la petición.
app.get("/users/:id", (req, res) => {
const { id } = req.params;
res.json({ id, name: "User " + id });
});
app.get("/search", (req, res) => {
const { q } = req.query;
res.json({ query: q ?? "" });
});Un middleware es una función que se ejecuta entre la llegada de la petición y tu ruta. Su firma: (req, res, next). Puede enriquecer req, responder directamente o ceder el paso con next(). En el fondo, Express no es más que una cadena de middleware: registro (logging), autenticación, análisis del cuerpo. Este registra cada petición con su duración:
app.use((req, res, next) => {
const start = Date.now();
res.on("finish", () => {
const ms = Date.now() - start;
console.log(`${req.method} ${req.url} ${ms}ms`);
});
next();
});/users/:id. ¿Dónde lees el valor de id?req.query.idreq.params.idreq.body.idnext()?package.json para usar la sintaxis import en Node.js?type con el valor moduleesm con el valor true