# प्लगइन और डेकोरेटर — Fastify

Source: https://www.geekswithgeeks.com/hi/fastify/ff-plugins

> पुनः-उपयोगी प्लगइन और decorators के साथ Fastify को extend करें।

## प्लगइन क्या हैं?

Plugins ऐसे async functions हैं जो functionality को encapsulate करते हैं—database clients, authentication, middleware—और routes, decorators, या hooks रजिस्टर करते हैं। वे modular सर्वर design को enable करते हैं।

## Plugin लिखना

एक plugin को Fastify instance और options object मिलता है। इसे `fastify.register(plugin, opts)` से रजिस्टर करें।

```javascript
// plugins/database.js
export default async function dbPlugin(fastify, opts) {
  const db = { getUser: (id) => ({ id, name: 'Alice' }) };
  fastify.decorate('db', db);
}

// server.js
fastify.register(dbPlugin);
fastify.get('/users/:id', async (req, reply) => {
  const user = await fastify.db.getUser(req.params.id);
  return user;
});
```

## Decorators properties जोड़ते हैं

`fastify.decorate()` Fastify instance में एक property जोड़ता है, सभी routes में उपलब्ध। `fastify.decorateRequest()` request object में जोड़ता है, `fastify.decorateReply()` reply में।
