TypeScript पर API: REST, GraphQL और gRPC — 2025 में क्या चुनें?

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

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

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

परिचय: API — यह सिर्फ अनुरोध नहीं, बल्कि एक संवाद है

\n\n

एक समय था, मोनोलिथ के युग में, डेवलपर्स PHP या Java पर बैकएंड लिखते थे, और फ्रंटएंड बस तैयार URL को खींच लेता था। सब कुछ सरल था, लेकिन धीमा। आज TypeScript पारिस्थितिकी तंत्र नए नियम निर्धारित करता है: हम सिर्फ डेटा का आदान-प्रदान नहीं करना चाहते, बल्कि इसे सुरक्षित, सख्त और ऑटो-कम्प्लीशन के साथ करना चाहते हैं। यहीं पर तीन दिग्गज काम में आते हैं: REST, GraphQL और gRPC।

\n\n

इस लेख में हम दस्तावेज़ीकरण को दोबारा नहीं बताएंगे। हम TypeScript पर एक व्यवसायी के दृष्टिकोण से प्रत्येक प्रोटोकॉल पर चलेंगे: हम वास्तविक कोड उदाहरण देखेंगे, प्रदर्शन की तुलना करेंगे और समझेंगे कि आपके प्रोजेक्ट के लिए कौन सा उपकरण उपयुक्त है। यदि आप TypeScript पर लिखते हैं और API के साथ अपने कौशल को बढ़ाना चाहते हैं — तो आप सही जगह पर हैं।

\n\n

TypeScript पर REST API: क्लासिक जो कभी नहीं मरता

\n\n

REST (Representational State Transfer) — यह डी-फैक्टो मानक है। सरलता, HTTP विधियाँ (GET, POST, PUT, DELETE) और संसाधन। लेकिन TypeScript में REST एक नए तरीके से सामने आता है: हमें अनुरोधों और प्रतिक्रियाओं की सख्त टाइपिंग मिलती है।

\n\n

टाइप किया गया REST क्लाइंट कैसा दिखता है

\n\n

आइए TypeScript पर REST API के लिए एक न्यूनतम लेकिन कार्यशील क्लाइंट लिखें। बिना अतिरिक्त लाइब्रेरी के — केवल fetch और टाइप्स।

\n\n
// प्रतिक्रिया के लिए टाइप्स\ninterface User {\n  id: number;\n  name: string;\n  email: string;\n}\n\ninterface ApiResponse<T> {\n  data: T;\n  status: number;\n  message: string;\n}\n\n// टाइप किया गया क्लाइंट\nclass RestClient {\n  private baseUrl: string;\n\n  constructor(baseUrl: string) {\n    this.baseUrl = baseUrl;\n  }\n\n  async get<T>(endpoint: string): Promise<ApiResponse<T>> {\n    const response = await fetch(`${this.baseUrl}${endpoint}`, {\n      method: 'GET',\n      headers: { 'Content-Type': 'application/json' },\n    });\n\n    if (!response.ok) {\n      throw new Error(`HTTP error! status: ${response.status}`);\n    }\n\n    const data: T = await response.json();\n    return {\n      data,\n      status: response.status,\n      message: 'Success',\n    };\n  }\n\n  async post<T, U>(endpoint: string, body: U): Promise<ApiResponse<T>> {\n    const response = await fetch(`${this.baseUrl}${endpoint}`, {\n      method: 'POST',\n      headers: { 'Content-Type': 'application/json' },\n      body: JSON.stringify(body),\n    });\n\n    if (!response.ok) {\n      throw new Error(`HTTP error! status: ${response.status}`);\n    }\n\n    const data: T = await response.json();\n    return {\n      data,\n      status: response.status,\n      message: 'Created',\n    };\n  }\n}\n\n// उपयोग\nconst client = new RestClient('https://jsonplaceholder.typicode.com');\n\nasync function fetchUser() {\n  const response = await client.get<User>('/users/1');\n  console.log(response.data.name); // ऑटो-कम्प्लीशन काम करता है!\n}\n\nfetchUser();
\n\n

जैसा कि आप देख सकते हैं, REST API TypeScript हमें हर चरण पर टाइप्स पर नियंत्रण देता है। फ़ील्ड नाम में गलती? TypeScript इसे संकलन चरण में पकड़ लेगा।

\n\n

REST कब चुनें

\n
    \n
  • सरलता — REST को समझना और बनाए रखना आसान है।
  • \n
  • कैशिंग — HTTP कैश बॉक्स से बाहर काम करता है।
  • \n
  • CRUD अनुप्रयोग — ब्लॉग, दुकानें, एडमिन पैनल।
  • \n
\n\n

नुकसान: जटिल नेस्टेड अनुरोधों पर, आप या तो बहुत अधिक डेटा प्राप्त करते हैं (over-fetching), या N अनुरोध करते हैं (N+1 समस्या)।

\n\n

TypeScript पर GraphQL: लचीलापन और सटीकता

\n\n

GraphQL — यह Facebook द्वारा बनाई गई एक क्वेरी भाषा है। इसकी मुख्य विशेषता: आप स्वयं तय करते हैं कि कौन से फ़ील्ड प्राप्त करने हैं। GraphQL TypeScript — यह एक शक्तिशाली जोड़ी है जो क्लाइंट और सर्वर पर पूर्ण टाइप सुरक्षा प्रदान करती है।

\n\n

टाइपिंग के साथ GraphQL क्वेरी लिखना

\n\n

उदाहरण के लिए, हम graphql-request लाइब्रेरी का उपयोग करेंगे — TypeScript के लिए एक हल्का क्लाइंट।

\n\n
import { request, gql } from 'grap                

ब्लॉग

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