TypeStack/routing-controllers TypeScript: पूरी गाइड उदाहरणों के साथ
1. यह क्या है और इसकी आवश्यकता क्यों है
TypeStack/routing-controllers TypeScript के लिए एक शक्तिशाली लाइब्रेरी है जो डेकोरेटर का उपयोग करके Node.js पर सर्वर-साइड एप्लिकेशन बनाने की सुविधा देती है। यह रूट्स, मिडलवेयर, डेटा वैलिडेशन और सीरियलाइज़ेशन को परिभाषित करने का एक डिक्लेरेटिव तरीका प्रदान करती है। हर HTTP रिक्वेस्ट के लिए मैन्युअल रूप से हैंडलर लिखने और उन्हें Express या Koa से जोड़ने के बजाय, आप बस क्लासेस और मेथड्स को डेकोरेटर से एनोटेट करते हैं, और लाइब्रेरी अपने आप सभी आवश्यक इंफ्रास्ट्रक्चर जेनरेट कर देती है।
इसकी आवश्यकता क्यों है? आधुनिक TypeScript वेब डेवलपमेंट में, बड़े प्रोजेक्ट्स में कोड डुप्लिकेशन और रखरखाव की कठिनाई अक्सर एक समस्या बन जाती है। routing-controllers इस समस्या को क्लासेस और डेकोरेटर पर आधारित एक साफ, मॉड्यूलर आर्किटेक्चर प्रदान करके हल करता है। यह कोड को अधिक पढ़ने योग्य, टेस्ट करने योग्य और स्केलेबल बनाता है। आप आसानी से मिडलवेयर का पुन: उपयोग कर सकते हैं, class-validator के साथ इनकमिंग डेटा को वैलिडेट कर सकते हैं, और स्वचालित रूप से OpenAPI (Swagger) डॉक्यूमेंटेशन जेनरेट कर सकते हैं।
यह लाइब्रेरी Express और Koa जैसे लोकप्रिय फ्रेमवर्क के साथ गहराई से एकीकृत होती है, और TypeStack इकोसिस्टम का हिस्सा है, जिसमें class-validator, class-transformer और typedi भी शामिल हैं। यह आपको डिपेंडेंसी इंजेक्शन, वैलिडेशन और डेटा ट्रांसफॉर्मेशन के साथ "आउट ऑफ द बॉक्स" पूर्ण बैकएंड एप्लिकेशन बनाने की अनुमति देता है।
2. इंस्टॉलेशन
लाइब्रेरी और इसकी डिपेंडेंसी स्थापित करने के लिए, अपने प्रोजेक्ट के टर्मिनल में निम्नलिखित कमांड चलाएँ:
npm install routing-controllers reflect-metadata
आपको समर्थित HTTP फ्रेमवर्क में से एक भी स्थापित करना होगा। Express या Koa की सिफारिश की जाती है:
npm install express
npm install @types/express --save-dev
या Koa के लिए:
npm install koa
npm install @types/koa --save-dev
अपने tsconfig.json में एक्सपेरिमेंटल डेकोरेटर को सक्षम करना न भूलें:
{
"compilerOptions": {
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"target": "ES6",
"module": "commonjs",
"outDir": "./dist",
"rootDir": "./src",
"strict": true
}
}
3. त्वरित शुरुआत — न्यूनतम कार्यशील उदाहरण
निम्नलिखित सामग्री के साथ एक app.ts फ़ाइल बनाएँ:
import 'reflect-metadata';
import { createExpressServer, Get, Controller, Res } from 'routing-controllers';
import { Response } from 'express';
@Controller()
class UserController {
@Get('/users')
getAll(@Res() response: Response) {
return response.json([{ id: 1, name: 'John Doe' }]);
}
}
const app = createExpressServer({
controllers: [UserController],
});
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});
सर्वर को npx ts-node app.ts कमांड से चलाएँ और ब्राउज़र में http://localhost:3000/users खोलें। आपको उपयोगकर्ताओं की एक सरणी के साथ JSON प्रतिक्रिया दिखाई देगी।
4. मुख्य तरीके/फंक्शन/क्लासेस
4.1 @Controller
सिग्नेचर: @Controller(basePath?: string)
यह क्या करता है: एक क्लास डेकोरेटर जो क्लास को कंट्रोलर के रूप में चिह्नित करता है। यह एक वैकल्पिक बेस पथ लेता है जो क्लास के अंदर सभी रूट्स में जोड़ा जाएगा।
कार्यशील उदाहरण:
@Controller('/api')
class ApiController {
@Get('/status')
getStatus() {
return { status: 'OK' };
}
}
// रूट: GET /api/status
4.2 @Get, @Post, @Put, @Delete, @Patch
सिग्नेचर: