पाठ 4 / 27

REST, GraphQL, gRPC और Webhooks: शैली चुनना

API शैली को उपभोक्ताओं और उपयोग-मामले से मिलाएँ।

कोई शैली हर जगह सर्वश्रेष्ठ नहीं

REST/HTTP+JSON सार्वजनिक और partner APIs का डिफ़ॉल्ट है: सरल, cache योग्य, हर tool द्वारा समझा जाने वाला। GraphQL clients को एक अनुरोध में ठीक वही fields माँगने देता है जो उन्हें चाहिए, जो डेटा के समृद्ध graph पर कई अलग front-ends के लिए ठीक है, पर महँगी queries के आसपास caching, rate limiting और सुरक्षा कठिन हो जाती है। gRPC (HTTP/2 पर Protocol Buffers) संक्षिप्त और तेज़ है, मज़बूत typed अनुबंध और streaming के साथ, आंतरिक service-से-service calls के लिए उत्कृष्ट, हालाँकि browsers से कम सुविधाजनक। Webhooks दिशा पलटते हैं: consumer के polling करने की जगह घटना होने पर आपका server consumer को बुलाता है। कई कंपनियाँ इन्हें मिलाती हैं: सार्वजनिक API के लिए REST, आंतरिक के लिए gRPC, events के लिए webhooks। उपभोक्ता कौन हैं और उन्हें क्या चाहिए, इससे चुनें, फ़ैशन से नहीं।

निर्णय तालिका

शुरुआती बिंदु; आपकी बाधाएँ अलग हो सकती हैं।

Situation                                          Good first choice
Public / partner API, many unknown clients          REST + OpenAPI
Many UIs needing different shapes of the same data  GraphQL
Internal microservice calls, low latency, streaming gRPC
"Tell me when X happens" to external systems         Webhooks (signed, retried)
Bulk data export / analytics                        files or streaming, not chatty REST

त्वरित जाँच: तेज़, typed आंतरिक service-से-service calls के लिए कौन-सी शैली ठीक है?

  • Email
  • gRPC
  • सिर्फ़ FTP
  • Screen scraping
Answer

gRPC — gRPC HTTP/2 पर संक्षिप्त Protobuf messages और generated typed clients उपयोग करता है।