Saltar al contenido
Framework Ecosystems LabsUn contrato, muchos ecosistemas, la misma prueba.

🚅 Fastify — 2016#

⬅️ Atlas · 🟨 Ecosistema JavaScript · 🗂️ Índice

Fastify se propuso mejorar dos cosas concretas de Express: validación y serialización derivadas de esquema, y un sistema de plugins con encapsulamiento explícito.

Aparición 2016
Clasificación web-framework
Ecosistema Node.js
Licencia MIT
Gobierno OpenJS Foundation
Estado 🟢 Activo
Documentación https://fastify.dev/docs/latest/

💡 El esquema como fuente#

app.post("/tasks", {
  schema: {
    body: { type: "object", required: ["title"],
            properties: { title: { type: "string", maxLength: 120 } } },
    response: { 201: { type: "object",
                       properties: { id: { type: "string" }, title: { type: "string" } } } },
  },
}, async (peticion, respuesta) => { /* ... */ });

Del mismo esquema salen tres cosas [json-schema]:

  1. Validación de la entrada, sin escribirla.
  2. Serialización de la salida, que además filtra: lo que no está en el esquema no se envía.
  3. Documentación OpenAPI, con un complemento.

La segunda es la más valiosa y la menos comentada: filtrar la respuesta por esquema impide la filtración accidental de campos internos — exactamente el fallo que la ficha de Eloquent describe cuando se serializa el modelo entero. Aquí el valor por omisión es seguro.

🧩 Plugins con encapsulamiento#

En Express, un middleware registrado afecta a todo lo que viene después. En Fastify, un plugin crea un contexto propio: lo que registra dentro no se filtra fuera salvo que se declare.

Eso ataca directamente el riesgo que el módulo 02 señala en las cadenas de middleware: el orden y el alcance son invisibles desde el código de negocio. Con encapsulamiento explícito, el alcance sí se ve.

⚖️ Frente a Express#

Express Fastify
Validación Eliges biblioteca Desde esquema, integrada
Serialización JSON.stringify completo Filtrada por esquema
Plugins Middleware global Contextos encapsulados
Ecosistema El mayor Menor, pero sólido
Curva Mínima Algo mayor

🎓 Las dos lecciones#

1. Filtrar la salida por esquema convierte la seguridad en el valor por omisión. Es mejor que recordar excluir campos.

2. Encapsular el alcance de un plugin hace visible lo que en una cadena global es invisible. Menos sorpresas al diagnosticar.

🔗 Enlaces#

Fuentes#