TypeScript में REST API 30 मिनट में कैसे लिखें: व्यावहारिक रूप से

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: क्यों TypeScript और REST API तेजी से विकास के लिए एक आदर्श जोड़ी हैं

\n

आधुनिक वेब डेवलपमेंट में गति और विश्वसनीयता की आवश्यकता होती है। यदि आपको मोबाइल ऐप, वेब सेवा या माइक्रोसर्विस आर्किटेक्चर के लिए जल्दी से बैकएंड बनाने की आवश्यकता है, तो TypeScript + Node.js + Express का संयोजन सबसे प्रभावी उपकरणों में से एक है। TypeScript JavaScript में सख्त टाइपिंग जोड़ता है, जो रनटाइम के बजाय कंपाइलेशन चरण में त्रुटियों को पकड़ने में मदद करता है। यह REST API बनाते समय विशेष रूप से मूल्यवान है, जहां प्रत्येक एंडपॉइंट को स्पष्ट रूप से पता होना चाहिए कि वह कौन सा डेटा स्वीकार करता है और लौटाता है।

\n

इस लेख में, हम 30 मिनट में कार्यों की सूची (To-Do List) के प्रबंधन के लिए एक पूर्ण REST API बनाएंगे। आप प्रोजेक्ट सेट अप करना, कंट्रोलर, रूट और मिडलवेयर लिखना सीखेंगे। सब कुछ तैयार कोड के साथ व्यावहारिक उदाहरणों पर आधारित होगा।

\n\n

प्रोजेक्ट की तैयारी और सेटअप (5 मिनट)

\n

सबसे पहले, हम प्रोजेक्ट की संरचना बनाएंगे और डिपेंडेंसी इंस्टॉल करेंगे।

\n
mkdir todo-api\ncd todo-api\nnpm init -y\nnpm install express cors uuid\nnpm install -D typescript @types/express @types/cors @types/uuid ts-node nodemon
\n

प्रोजेक्ट की रूट में tsconfig.json फ़ाइल बनाएं:

\n
{\n  "compilerOptions": {\n    "target": "ES2020",\n    "module": "commonjs",\n    "outDir": "./dist",\n    "rootDir": "./src",\n    "strict": true,\n    "esModuleInterop": true,\n    "skipLibCheck": true\n  },\n  "include": ["src/**/*"]\n}
\n

package.json में स्क्रिप्ट जोड़ें:

\n
"scripts": {\n  "dev": "nodemon --exec ts-node src/index.ts",\n  "build": "tsc",\n  "start": "node dist/index.js"\n}
\n

src फ़ोल्डर और index.ts फ़ाइल बनाएं - यह एंट्री पॉइंट होगा।

\n\n

बेसिक फ़ोल्डर संरचना

\n
    \n
  • src/index.ts — एंट्री पॉइंट, सर्वर शुरू करना
  • \n
  • src/routes/tasks.ts — कार्यों के लिए रूट
  • \n
  • src/controllers/taskController.ts — अनुरोध प्रोसेसिंग लॉजिक
  • \n
  • src/models/task.ts — इंटरफेस और टाइप
  • \n
  • src/middleware/errorHandler.ts — त्रुटि प्रबंधन (वैकल्पिक)
  • \n
\n\n

डेटा मॉडल और इंटरफेस बनाना (5 मिनट)

\n

अपने कार्य के लिए डेटा टाइप परिभाषित करें। src/models/task.ts फ़ाइल बनाएं:

\n
export interface Task {\n  id: string;\n  title: string;\n  completed: boolean;\n  createdAt: Date;\n}\n\nexport type CreateTaskDto = Pick<Task, 'title'>;\nexport type UpdateTaskDto = Partial<Pick<Task, 'title' | 'completed'>>;
\n

यहां हम Pick और Partial का उपयोग कर रहे हैं - TypeScript के बिल्ट-इन यूटिलिटी टाइप। CreateTaskDto केवल शीर्षक स्वीकार करता है, जबकि UpdateTaskDto आंशिक अपडेट के लिए वैकल्पिक फ़ील्ड स्वीकार करता है।

\n\n

कंट्रोलर और रूट लिखना (15 मिनट)

\n

अब सबसे दिलचस्प हिस्सा - एप्लिकेशन लॉजिक। हम मेमोरी में एक अस्थायी कार्य भंडारण (in-memory storage) बनाएंगे। प्रोडक्शन के लिए इसे डेटाबेस से बदलना होगा।

\n\n

टास्क कंट्रोलर

\n

फ़ाइल src/controllers/taskController.ts:

\n
import { Request, Response } from 'express';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Task, CreateTaskDto, UpdateTaskDto } from '../models/task';\n\n// अस्थायी भंडारण\nlet tasks: Task[] = [];\n\n// GET /api/tasks\nexport const getAllTasks = (req: Request, res: Response) => {\n  res.json(tasks);\n};\n\n// GET /api/tasks/:id\nexport const getTaskById = (req: Request, res: Response) => {\n  const task = tasks.find(t => t.id === req.params.id);\n  if (!task) {\n    return res.status(404).json({ message: 'कार्य नहीं मिला' });\n  }\n  res.json(task);\n};\n\n// POST /api/tasks\nexport const createTask = (req: Request, res: Response) => {\n  const { title } = req.body as CreateTaskDto;\n  if (!title || typeof title !== 'string') {\n    return res.status(400).json({ message: 'title फ़ील्ड अनिवार्य है और स्ट्रिंग होना चाहिए' });\n  }\n  const newTask: Task = {\n    id: uuidv4(),\n    title,\n    completed: false,\n    createdAt: new Date()\n  };\n  tasks.push(newTask);\n  res.status(201).json(newTask);\n};\n\n// PUT /api/tasks/:id\nexport const updateTask = (req: Request, res: Response) => {\n  const { title, completed } = req.body as UpdateTaskDto;\n  const taskIndex = tasks.findIndex(t => t.id === req.params.id);\n  if (taskIndex === -1) {\n    return res.status(404).json({ message: 'कार्य नहीं मिला' });\n  }\n  if (title !== undefined) tasks[taskIndex].title = title;\n  if (completed !== undefined) tasks[taskIndex].completed = completed;\n  res.json(tasks[taskIndex]);\n};\n\n// DELETE /api/tasks/:id\nexport const deleteTask = (req: Request, res: Response) => {\n  const taskIndex = tasks.findIndex(t => t.id === req.params.id);\n  if (taskIndex === -1) {\n    return res.status(404).json({ message: 'कार्य नहीं मिला' });\n  }\n  tasks.splice(taskIndex, 1);\n  res.status(204).send();\n};
\n\n

रूट सेटअप

\n

फ़ाइल src/routes/tasks.ts:

\n
import { Router } from 'express';\nimport { getAllTasks, getTaskById, createTask, updateTask, deleteTask } from '../controllers/taskController';\n\nconst router = Router();\n\nrouter.get('/', getAllTasks);\nrouter.get('/:id', getTaskById);\nrouter.post('/', createTask);\nrouter.put('/:id', updateTask);\nrouter.delete('/:id', deleteTask);\n\nexport default router;
\n\n

सर्वर सेटअप और मिडलवेयर (5 मिनट)

\n

अब सब कुछ src/index.ts में जोड़ें:

\n
import express from 'express';\nimport cors from 'cors';\nimport taskRoutes from './routes/tasks';\n\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\n// मिडलवेयर\napp.use(cors());\napp.use(express.json());\n\n// रूट\napp.use('/api/tasks', taskRoutes);\n\n// सर्वर शुरू करें\napp.listen(PORT, () => {\n  console.log(`सर्वर पोर्ट ${PORT} पर चल रहा है`);\n});
\n

बस इतना ही! अब npm run dev कमांड चलाएं और आपका API तैयार है।

\n\n

निष्कर्ष और अगले कदम

\n

हमने 30 मिनट में TypeScript और Express का उपयोग करके एक पूर्ण REST API बनाया। हमने कवर किया:

\n
    \n
  • प्रोजेक्ट सेटअप और TypeScript कॉन्फ़िगरेशन
  • \n
  • डेटा मॉडल और इंटरफेस बनाना
  • \n
  • CRUD ऑपरेशंस के साथ कंट्रोलर लिखना
  • \n
  • रूट सेटअप और Express एप्लिकेशन में एकीकरण
  • \n
\n

अगले कदम के रूप में, आप PostgreSQL या MongoDB जैसे डेटाबेस को जोड़ सकते हैं, प्रमाणीकरण (JWT) जोड़ सकते हैं, या त्रुटि प्रबंधन मिडलवेयर जोड़ सकते हैं।

ब्लॉग

पुस्तक अनुशंसाएँ