TypeScript के लिए HTTP-क्लाइंट: नेटवर्क कार्य के लिए शीर्ष लाइब्रेरीज़
\n\nआधुनिक वेब डेवलपमेंट में TypeScript पर, सही HTTP-क्लाइंट का चयन प्रदर्शन, टाइप सुरक्षा और कोड रखरखाव में आसानी के लिए महत्वपूर्ण है। HTTP अनुरोधों को निष्पादित करने के लिए सर्वश्रेष्ठ लाइब्रेरीज़, उनकी विशेषताएँ और उपयोग के उदाहरण देखें।
\n\n1. Axios — सार्वभौमिक मानक
\nAxios अपने समृद्ध API और TypeScript के लिए अंतर्निहित समर्थन के कारण सबसे लोकप्रिय HTTP-क्लाइंट बना हुआ है। यह लाइब्रेरी GET, POST, PUT, DELETE अनुरोधों के लिए सुविधाजनक विधियाँ, JSON का स्वचालित रूपांतरण और अनुरोध रद्द करने की सुविधा प्रदान करती है।
\n\nimport axios from 'axios';\n\ninterface User {\n id: number;\n name: string;\n email: string;\n}\n\nasync function getUser(id: number): Promise<User> {\n const response = await axios.get<User>(`/api/users/${id}`);\n return response.data;\n}\n\n// डेटा भेजने का उदाहरण\nconst newUser: Partial<User> = { name: 'इवान', email: 'ivan@example.com' };\naxios.post('/api/users', newUser).then(({ data }) => console.log(data));\n\n\nलाभ:
\n- \n
- TypeScript के साथ गहन एकीकरण (प्रतिक्रियाओं के लिए जेनेरिक) \n
- लॉगिंग और त्रुटि प्रबंधन के लिए इंटरसेप्टर \n
- XSS से अंतर्निहित सुरक्षा और स्वचालित क्रमांकन \n
- फ़ाइल अपलोड प्रगति के लिए समर्थन \n
2. Ky — हल्का और आधुनिक
\nKy — एक न्यूनतम लाइब्रेरी (केवल ~5KB), जो Fetch API पर आधारित है। यह उन प्रोजेक्ट्स के लिए आदर्श है जहाँ लोडिंग गति और सरलता महत्वपूर्ण है। TypeScript पर पूरी तरह से टाइप की गई है।
\n\nimport ky from 'ky';\n\ninterface Post {\n userId: number;\n id: number;\n title: string;\n}\n\nconst posts = await ky.get('https://jsonplaceholder.typicode.com/posts').json<Post[]>();\n\n// कस्टम हेडर के साथ भेजना\nconst response = await ky.post('https://api.example.com/data', {\n json: { key: 'value' },\n headers: { 'X-API-Key': 'secret' },\n});\n\n\nमुख्य विशेषताएँ:
\n- \n
- HTTP त्रुटियों का स्वचालित प्रबंधन (4xx/5xx स्थितियाँ) \n
- अंतर्निहित retry समर्थन (विफलता पर पुनः प्रयास) \n
- क्लास विस्तार के माध्यम से आसान अनुकूलन \n
- ब्राउज़र और Node.js में काम करता है (एडेप्टर के माध्यम से) \n
3. Got — Node.js के लिए शक्तिशाली उपकरण
\nGot — सर्वर-साइड TypeScript के लिए एक पूर्ण-सुविधा संपन्न HTTP-क्लाइंट है। यह स्ट्रीम, कैशिंग, प्रॉक्सी और जटिल प्रमाणीकरण परिदृश्यों का समर्थन करता है।
\n\nimport got from 'got';\n\ninterface ApiResponse {\n success: boolean;\n data: Record<string, unknown>;\n}\n\nconst result = await got.get('https://api.example.com/resource', {\n responseType: 'json',\n headers: {\n authorization: `Bearer ${process.env.TOKEN}`\n }\n}).json<ApiResponse>();\n\n// प्रगति के साथ फ़ाइल डाउनलोड\ngot.stream('https://example.com/file.zip')\n .on('downloadProgress', ({ percent }) => {\n console.log(`डाउनलोड हुआ ${(percent * 100).toFixed(0)}%`);\n })\n .pipe(fs.createWriteStream('./file.zip'));\n\n\nGot कब चुनें:
\n- \n
- उच्च लोड वाले सर्वर अनुप्रयोगों के लिए \n
- डेटा स्ट्रीम के साथ काम करने की आवश्यकता होने पर \n
- जटिल कैशिंग और पुनः प्रयास परिदृश्यों के लिए \n
- डेकोरेटर के माध्यम से TypeScript एकीकरण \n
4. Fetch API — मूल विकल्प
\nआधुनिक Fetch API — ब्राउज़र और Node.js (संस्करण 18 से) में अंतर्निहित है। TypeScript जेनेरिक के माध्यम से टाइपिंग जोड़ता है, जिससे यह एक पूर्ण उपकरण बन जाता है।
\n\ninterface Config {\n baseURL: string;\n token?: string;\n}\n\nasync function fetchData<T>(endpoint: string, config: Config): Promise<T> {\n const response = await fetch(`${config.baseURL}${endpoint}`, {\n headers: {\n 'Content-Type': 'application/json',\n ...(config.token && { Authorization: `Bearer ${config.token}` })\n