# REST, GraphQL, gRPC और Webhooks: शैली चुनना — API Design और Versioning

Source: https://www.geekswithgeeks.com/hi/api-design/pr-choosing-style

> 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। उपभोक्ता कौन हैं और उन्हें क्या चाहिए, इससे चुनें, फ़ैशन से नहीं।

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

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

```text
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
```

**Quiz:** तेज़, typed आंतरिक service-से-service calls के लिए कौन-सी शैली ठीक है?

- [ ] Email
- [x] gRPC
- [ ] सिर्फ़ FTP
- [ ] Screen scraping

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