पाठ 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 की परवाह किए बिना।