SkillByAIइंटरैक्टिव संस्करण खोलें →

पाठ 13 / 32

Lifecycle Hooks

onRequest, preHandler और onSend जैसे lifecycle बिंदुओं पर globally या per route code चलाएँ।

Fastify में Hook points

हर request पर hooks इस क्रम में चलते हैं: onRequest, preParsing, preValidation, preHandler, फिर preSerialization, onSend और onResponse। उन्हें middleware-जैसे logic के लिए उपयोग करें।

सामान्य hooks

Globally या per-route hooks रजिस्टर करें। वे sequence में चलते हैं और request/response को modify कर सकते हैं।

// Global hook: log every request
fastify.addHook('onRequest', async (request) => {
  request.startTime = Date.now();
  request.log.info(`${request.method} ${request.url}`);
});

// Global hook: add timing header
fastify.addHook('onSend', async (request, reply, payload) => {
  reply.header('X-Response-Time', `${Date.now() - request.startTime}ms`);
  return payload;
});

// Per-route hook: validate auth token
fastify.get('/admin', 
  { onRequest: async (req, reply) => {
    const token = req.headers.authorization;
    if (!token) return reply.status(401).send({ error: 'Unauthorized' });
  }},
  async () => ({ message: 'Admin access granted' })
);

त्वरित जाँच

त्वरित जाँच: कौन-सा hook validation के बाद लेकिन handler से पहले चलता है?

  • preHandler
  • onRequest
  • preValidation
  • onSend
Answer

preHandler — preHandler validation के बाद और route handler से पहले चलता है। इसे auth checks या last-minute data preparation के लिए उपयोग करें।

onRequest hook

hooks lifecycle के तय बिंदुओं पर चलते हैं।

  • onRequest सबसे पहले चलता है, body parse होने से पहले।
  • async में सिर्फ़ return करें, या callback style में done() call करें, दोनों नहीं।
  • यहाँ header न होने पर request reject होती है।
const fastify = require('fastify')();

fastify.addHook('onRequest', async (request, reply) => {
  if (!request.headers['x-api-key']) {
    reply.code(401).send({ error: 'missing key' });
  }
});

fastify.get('/', async () => ({ ok: true }));

fastify.listen({ port: 3000 });

त्वरित जाँच

त्वरित जाँच: body parse होने से पहले कौन सा hook चलता है?

  • preHandler
  • onRequest
  • onSend
Answer

onRequest — क्रम: onRequest, preParsing, preValidation, preHandler। body preValidation से उपलब्ध होती है।