पाठ 27 / 27
Revision: Cheat Sheet और Self-Check
पूरे कोर्स के सिद्धांतों, परिपाटियों और versioning प्रथाओं की दोहराई करें।
Cheat sheet
डिज़ाइन: उपभोक्ता-पहले; बहुवचन-संज्ञा resources; methods क्रिया उठाते हैं (GET/HEAD safe, PUT/DELETE idempotent, POST दोनों नहीं); ज़रूरत से REST/GraphQL/gRPC/webhooks चुनें। Responses: सटीक status codes; application/problem+json errors; cursor pagination; filter/sort/fields परिपाटियाँ। Reliability: POST के लिए Idempotency-Key, ETag/If-None-Match/If-Match, 429 + Retry-After के साथ rate limits, 202 + status resource। सुरक्षा: HTTPS, header tokens, scopes, object-level authorisation (BOLA), न्यूनतम responses, timestamps के साथ हस्ताक्षरित webhooks। Versioning: पहले जोड़ने वाले बदलाव; तोड़ने वाले बदलाव पहचानें; URI/header/media-type/तारीख़-आधारित; एक आंतरिक मॉडल। Deprecation: Deprecation + Sunset + Link headers, लंबी समय-सीमा, उपयोग ट्रैकिंग, migration guide, 410 Gone। गुणवत्ता: OpenAPI contract-first, contract और breaking-change tests, style guide और review।
इंटरव्यू में पूछे जाने वाले सवाल
इन्हें समझाने को तैयार रहें: PUT, PATCH और POST में अंतर और कौन-से idempotent हैं, बदलते dataset के लिए pagination कैसे डिज़ाइन करेंगे, idempotency keys दोहरे शुल्क कैसे रोकती हैं, तोड़ने वाला बदलाव क्या है और उसे version व विदा कैसे करेंगे, और एक user को दूसरे user के orders पढ़ने से कैसे रोकेंगे।
त्वरित जाँच: Timeout के बाद मोबाइल ऐप `POST /payments` retry करता है और ग्राहक से दो बार शुल्क लग जाता है। सबसे अच्छा सुधार क्या है?
- हर error पर 200 लौटाएँ
- सिर्फ़ client पर retries बंद करें
- Endpoint को GET में बदलें
- Idempotency-Key अनिवार्य करें और दोहराव पर रखा नतीजा लौटाएँ
Answer
Idempotency-Key अनिवार्य करें और दोहराव पर रखा नतीजा लौटाएँ — Key retries को एक तार्किक ऑपरेशन से बाँधती है ताकि शुल्क एक बार लगे।
त्वरित जाँच: आपको हज़ारों clients द्वारा उपयोग किए जाने वाले response field का नाम बदलना है। सबसे सुरक्षित योजना क्या है?
- नाम बदलें और उम्मीद रखें
- पुराने के साथ नया field जोड़ें, पुराने को sunset तारीख़ के साथ deprecate करें और उपयोग ट्रैक करें
- अगली release में चुपचाप हटाएँ
- नाम रखें पर अर्थ बदलें
Answer
पुराने के साथ नया field जोड़ें, पुराने को sunset तारीख़ के साथ deprecate करें और उपयोग ट्रैक करें — जोड़ने वाला बदलाव और deprecation अवधि clients को अपनी गति से migrate करने देती है।
त्वरित जाँच: Rows सूची के आगे जुड़ने के बाद client पन्ना 2 माँगता है। कौन-सी pagination दोहराव से बचाती है?
- Offset pagination
- Cursor (keyset) pagination
- Random pagination
- कोई pagination नहीं
Answer
Cursor (keyset) pagination — Cursor आख़िरी देखे item के बाद आगे बढ़ता है, सूची में पहले हुए inserts की परवाह किए बिना।