Cicle de vida d'una petició HTTP a Express i Fastify

Descobreix el cicle de vida d'una petició HTTP a Express i Fastify. Aprèn per què oblidar next() causa timeouts i com depurar-ho. Millora el rendiment de

miércoles, 8 de julio de 2026 • 4 min de lectura • Equip Q2BSTUDIO

Errors que bloquegen el teu servidor Node.js

Entendre el cicle de vida d'una petició HTTP en frameworks com Express o Fastify no és un mer exercici acadèmic; és una habilitat pràctica que marca la diferència entre una aplicació que respon amb fluïdesa i un sistema que, sense previ avís, deixa els usuaris esperant fins que el timeout del socket els allibera. En un context on cada mil·lisegon compta i l'experiència de l'usuari és el principal actiu, dominar aquest flux resulta indispensable per a qualsevol equip que desenvolupi aplicacions a mida amb Node.js.

Quan un client HTTP envia una sol·licitud, el servidor Node.js inicia un procés que va molt més enllà de 'cridar al manejador i retornar una resposta'. A Express, aquest procés s'organitza com una pila seqüencial de middleware. Cada peça de programari intermedi rep els objectes req i res juntament amb la funció next. Si una funció no invoca next ni envia una resposta explícita (per exemple mitjançant res.json), el flux s'atura de forma silenciosa: no es llança cap excepció, no apareix cap error als registres del servidor, i el client roman penjat fins que el socket expira. En entorns productius, aquesta fallada es manifesta com un augment en el percentil 99 de latència i una acumulació de connexions en estat ESTABLISHED, sense que els logs tradicionals donin cap pista. Per a empreses que ofereixen serveis cloud AWS i Azure, detectar i prevenir aquests escenaris és crític per mantenir els SLAs compromesos.

Fastify, per la seva banda, substitueix la pila plana de middleware per una canalització de hooks amb noms i ordre fixos: onRequest, preParsing, preValidation, preHandler, el manejador de la ruta, preSerialization, onSend, i finalment onResponse. Cada hook és una funció asíncrona l'avanç de la qual depèn que la promesa es resolgui o es rebutgi. Si un hook oblida fer reply.send() o no retorna un valor (en el cas del manejador), el pipeline es congela exactament igual que a Express, però amb l'avantatge que el propi framework pot detectar el bloqueig si s'usen timeouts adequats a nivell de servidor. Aquesta diferència de disseny fa que Fastify sigui especialment atractiu per a projectes que requereixen un alt rendiment en càrregues JSON, com sol passar en solucions d'intel·ligència artificial i automatització de processos on cada petició ha de ser validada, serialitzada i retornada en el menor temps possible.

Els modes de fallada més comuns van més enllà del simple oblit de next(). També apareix la duplicitat de respostes —enviar headers dues vegades llança l'error ERR_HTTP_HEADERS_SENT—, i els problemes d'ordre de middleware: posar un manejador d'errors abans que les rutes o una capa d'autenticació després del controlador deixa l'aplicació exposada a comportaments impredictibles. En projectes de ciberseguretat, per exemple, una mala col·locació del middleware d'autorització pot obrir bretxes de seguretat inadvertides. La pràctica recomanada és registrar les rutes globals sempre abans dels controladors específics i usar sempre la sentència return en enviar la resposta per evitar l'execució de codi posterior.

Per depurar aquests problemes, la monitorització basada en traces distribuïdes s'ha convertit en l'eina més eficaç. Instrumentar l'aplicació amb OpenTelemetry permet veure, en un sol panell, quin middleware o hook està consumint temps o ha quedat obert sense completar. A més, establir timebounds a nivell del servidor HTTP (requestTimeout, headersTimeout) protegeix contra clients lents i evita que els sockets s'acumulin indefinidament. A Q2BSTUDIO apliquem aquestes tècniques de forma sistemàtica quan desenvolupem programari a mida per als nostres clients, integrant serveis intel·ligència de negoci com Power BI per visualitzar mètriques de latència i detectar anomalies abans que afectin els usuaris finals.

L'elecció entre Express i Fastify depèn en gran mesura del perfil de l'aplicació. Express ofereix una flexibilitat immensa gràcies al seu ecosistema de middleware i la seva facilitat d'aprenentatge, ideal per a prototips ràpids i equips que prioritzen la familiaritat. Fastify, amb el seu encaminador basat en radix trie i la seva serialització compilada mitjançant esquemes, ofereix un rendiment notablement superior sota càrregues altes de JSON, cosa que resulta determinant en projectes d'ia per a empreses o en la construcció d'agents IA que processen múltiples peticions en temps real. En qualsevol cas, el fonamental és comprendre que cada petició recorre un camí previsible i que la descura en qualsevol pas pot tenir conseqüències mesurables en producció. A Q2BSTUDIO ajudem els nostres clients a dissenyar aquestes arquitectures amb l'equilibri adequat entre velocitat, seguretat i mantenibilitat, garantint que cada línia de codi contribueixi a una experiència d'usuari excepcional.

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.