प्रतिनिधि इंटरव्यू विषय

सामान्य साक्षात्कार: HTTP 410 Gone को रिसोर्स का लाइफ़साइकिल कब व्यक्त करना चाहिए?

सामान्यमध्यम
Offer.cc संपादकीय टीमप्रकाशित अपडेट किया गया

प्रश्न

एक API वर्ज़न को स्थायी रूप से रिटायर कर दिया गया है, जबकि पुराने लिंक्स कैश्ड रहते हैं और उन पर कॉल्स आती रहती हैं। आपको कब 410 रिटर्न करना चाहिए, और आप कैशिंग, रिप्लेसमेंट लिंक्स, ऑडिट्स और चरणबद्ध शटडाउन को कैसे संभालते हैं?

प्रॉम्प्ट और दायरा

एक सार्वजनिक API वर्ज़न और वेब रिसोर्स को स्थायी रूप से हटा दिया गया है। टीम चाहती है कि क्लाइंट्स माइग्रेशन पाथ और ऑडिट साक्ष्य को बनाए रखते हुए पुनः प्रयास (retrying) बंद कर दें। 410, 404, 301/308 और 403 की तुलना करें, फिर रिस्पॉन्स, कैशिंग, एक शटडाउन विंडो और मॉनिटरिंग डिज़ाइन करें।

यह एक HTTP सिमेंटिक्स और प्रोडक्ट-लाइफ़साइकिल से जुड़ा प्रश्न है। वर्ज़न और रिटायरमेंट की तारीख धारणाएं हैं, बाज़ार के दावे नहीं।

इंटरव्यूअर क्या जांच रहा है

  • क्या आप "वर्तमान में अनुपलब्ध" और "ज्ञात रूप से स्थायी रूप से हटाया गया" के बीच अंतर करते हैं।
  • क्या आप कैशिंग और क्लाइंट्स पर 410 के प्रभावों को समझते हैं।
  • क्या माइग्रेशन, ऑथराइजेशन, प्राइवेसी और ऑडिट का एक ही लाइफ़साइकिल मॉडल है।
  • क्या आप किसी अज्ञात आउटेज या रूटिंग बग को छिपाने के लिए स्टेटस कोड का उपयोग करने से बचते हैं।

पूछने के लिए स्पष्टीकरण संबंधी प्रश्न

  1. क्या रिसोर्स स्थायी रूप से डिलीट कर दिया गया है, अस्थायी रूप से ऑफ़लाइन है, या किसी स्थिर URI पर ले जाया गया है?
  2. क्या इसमें कैश, सर्च इंडेक्स, SDK पुनः प्रयास (retries), या ऑफ़लाइन क्लाइंट्स शामिल हैं?
  3. क्या रिटेंशन, कंप्लायंस या ऑडिट नियम डिलीशन को बाधित करते हैं?
  4. क्या पुराने क्लाइंट्स 410 और एरर बॉडी में मौजूद माइग्रेशन जानकारी को समझ सकते हैं?
  5. क्या अनऑथराइज्ड उपयोगकर्ताओं को रिसोर्स के अस्तित्व को छिपाने के लिए 404 दिखना चाहिए?

30-सेकंड का उत्तर

"410 का अर्थ है कि सर्वर जानता है कि टारगेट मौजूद था लेकिन उसे स्थायी रूप से हटा दिया गया है; 404 केवल यह बताता है कि कोई वर्तमान रिप्रजेंटेशन उपलब्ध नहीं है। जब कोई स्थिर रिप्लेसमेंट मौजूद हो तो 301 या 308 का उपयोग करें, और ऑथराइजेशन के लिए 403 या सुरक्षा-संचालित 404 का उपयोग करें। डॉक्स, SDKs और माइग्रेशन विंडो के माध्यम से रिटायरमेंट की घोषणा करें, फिर सोच-समझकर लगाए गए कैश कंट्रोल्स के साथ एक स्थिर कोड और डॉक्यूमेंटेशन लिंक युक्त 410 रिटर्न करें। क्लाइंट्स को व्यर्थ के पुनः प्रयास बंद कर देने चाहिए। डिलीशन ऑडिट योग्य बना रहता है, और मैं रिटायरमेंट ट्रैफ़िक, कैश व्यवहार और माइग्रेशन की सफलता को मापता हूँ।"

चरण-दर-चरण डिज़ाइन

1. स्थिति निर्णय तालिका (State Decision Table) बनाएं

स्थायी रूप से हटाए गए ऐसे रिसोर्स के लिए 410 का उपयोग करें जिसे दोबारा सर्व नहीं किया जाएगा। जब अस्तित्व या भविष्य की उपलब्धता अज्ञात हो तो 404 का उपयोग करें, और जब रिसोर्स का एक स्पष्ट नया URI हो तो रीडायरेक्ट का उपयोग करें। ऑथराइजेशन विफलता 403 होगी या एक छिपा हुआ 404, यह थ्रेट मॉडल और डिस्क्लोज़र नीति पर निर्भर करता है।

2. 410 रिस्पॉन्स डिज़ाइन करें

एक स्थिर एरर कोड, रिक्वेस्ट ID, रिटायरमेंट डॉक्यूमेंटेशन और एक वैकल्पिक रिप्लेसमेंट संकेत शामिल करें। संवेदनशील डिलीशन कारणों या डेटाबेस स्थिति को उजागर न करें। एक API स्ट्रक्चर्ड एरर बॉडी का उपयोग कर सकती है; एक वेब पेज सुलभ माइग्रेशन स्पष्टीकरण प्रदान कर सकता है। दोनों को मशीन-पठनीय 410 सिमेंटिक्स बनाए रखना चाहिए।

http
HTTP/1.1 410 Gone
Cache-Control: max-age=3600
Content-Type: application/problem+json
Link: <https://api.example/migrations/v1>; rel="deprecation"

3. कैशिंग और क्लाइंट्स को संभालें

410 आम तौर पर अनुमानी (heuristically) रूप से कैश करने योग्य होता है, जब तक कि मेथड की परिभाषा या स्पष्ट कैश कंट्रोल्स अन्यथा न कहें। लाइफ़टाइम चुनने से पहले गलत निरस्तीकरण (false-revocation) जोखिम, CDN व्यवहार और स्थानीय क्लाइंट कैश का मूल्यांकन करें। यदि निर्णय बदल सकता है, तो छोटी अवधि से शुरुआत करें और धीरे-धीरे बढ़ाएं। 410 देखने वाले क्लाइंट को व्यर्थ पुनः प्रयासों को रोक देना चाहिए और माइग्रेशन या यूज़र-नोटिस लॉजिक में प्रवेश करना चाहिए।

4. रिटायरमेंट विंडो की योजना बनाएं

डॉक्यूमेंटेशन, SDKs और रिस्पॉन्स हेडर में डिप्रिकेशन की तारीख प्रकाशित करें, फिर कॉलर, वर्ज़न और ट्रैफ़िक के आधार पर उपयोग को विभाजित करें। विंडो के दौरान माइग्रेशन सिग्नल्स के साथ सफलतापूर्वक सर्व करें; उसके बाद 410 रिटर्न करें। उच्च-जोखिम वाले राइट्स को पहले अस्वीकार किया जा सकता है जबकि रीड-ओनली माइग्रेशन एंडपॉइंट बना रहता है। प्रत्येक परिवर्तन से पहले रोलबैक चेकपॉइंट्स परिभाषित करें।

5. डिलीशन और प्राइवेसी साक्ष्य सुरक्षित रखें

410 स्टोरेज से भौतिक डिलीशन को साबित नहीं करता है। रिसोर्स की पहचान, अप्रूवल, डिलीशन का समय, रिटेंशन नीति, रिप्लेसमेंट एंट्री पॉइंट और रिस्पॉन्स वर्ज़न रिकॉर्ड करें। लॉग्स में कभी भी डिलीट की गई संवेदनशील सामग्री को न रखें। यदि कंप्लायंस के तहत विलंबित डिलीशन की आवश्यकता है, तो 410 प्रदर्शित करें जबकि आंतरिक रिटेंशन और क्लीनअप अपने स्वयं के नियंत्रण में जारी रहें।

6. वर्गीकृत परिणामों की निगरानी करें

वास्तविक रिटायरमेंट को रूटिंग बग से अलग करने के लिए 410 को रिसोर्स, क्लाइंट, SDK वर्ज़न, कैश हिट और माइग्रेशन क्लिक के आधार पर विभाजित करें। 404, 403, रीडायरेक्ट चेन्स, पुनः प्रयास वॉल्यूम और सपोर्ट टिकट्स की तुलना करें। यदि 410 अप्रत्याशित रूप से बढ़ता है, तो कैश लाइफ़टाइम बढ़ाना बंद करें और जांच करते हुए कॉन्फ़िगरेशन को रोलबैक करें।

मॉडल उच्च-गुणवत्ता वाला उत्तर

"मैं पहले रिसोर्स की स्थिति स्थापित करता हूँ। ज्ञात स्थायी निष्कासन को 410 मिलता है; अज्ञात या अस्थायी अनुपस्थिति को 404 मिलता है; एक स्पष्ट रिप्लेसमेंट को 301 या 308 मिलता है; ऑथराइजेशन 403 या सुरक्षा-संचालित 404 का उपयोग करता है। मैं डॉक्स, SDKs और हेडर के माध्यम से एक माइग्रेशन विंडो की घोषणा करता हूँ, फिर सतर्क कैशिंग का उपयोग करते हुए एक स्थिर कोड, रिक्वेस्ट ID और डॉक्यूमेंटेशन लिंक के साथ 410 रिटर्न करता हूँ। क्लाइंट्स पुनः प्रयास करना बंद कर देते हैं। डिलीशन और रिटेंशन का अलग से ऑडिट किया जाता है, जबकि मेट्रिक्स 410 स्रोतों, कैश, माइग्रेशन की सफलता और रोलबैक ट्रिगर्स को कवर करते हैं।"

सामान्य गलतियाँ

  • प्रत्येक डिलीशन के लिए 410 लौटाना → अस्थायी या अज्ञात स्थितियाँ स्थायी लगने लगती हैं → रिसोर्स की स्थिति को वर्गीकृत करें।
  • रिप्लेसमेंट होने के बावजूद 410 लौटाना → क्लाइंट्स माइग्रेशन का अवसर खो देते हैं → 301/308 और डॉक्यूमेंटेशन का उपयोग करें।
  • 410 को हमेशा के लिए कैश करना → गलत रिटायरमेंट को पूर्ववत करना कठिन होता है → जोखिम के अनुसार TTL सेट करें और बढ़ाएं।
  • 410 को भौतिक डिलीशन के प्रमाण के रूप में मानना → रिटेंशन और कंप्लायंस छूट जाते हैं → क्लीनअप का अलग से ऑडिट करें।
  • केवल कुल संख्या को देखना → पुराने SDK की विफलताएं छिपी रहती हैं → वर्ज़न, रिसोर्स और कैश के आधार पर विभाजित करें।

फ़ॉलो-अप प्रश्न और उत्तर

410 और 404 के बीच अनिवार्य अंतर क्या है?

410 बताता है कि सर्वर पुष्टि करता है कि रिसोर्स मौजूद था और उसे स्थायी रूप से हटा दिया गया है। 404 यह नहीं बताता कि वह मौजूद था या नहीं, और न ही यह कि वह बाद में दिखाई दे सकता है। 410 चुनना पुनः प्रयास, कैशिंग और माइग्रेशन व्यवहार के बारे में एक मजबूत वादा करता है।

क्या 410 में कोई रिप्लेसमेंट लिंक शामिल हो सकता है?

हाँ, यह डॉक्यूमेंटेशन या माइग्रेशन एंट्री पॉइंट प्रदान कर सकता है, लेकिन इसे यह दिखावा नहीं करना चाहिए कि रिप्लेसमेंट ही वर्तमान रिसोर्स है। क्लाइंट अभी भी ऑथराइजेशन, वर्ज़न और डेटा मैपिंग की पुन: जांच करता है।

एक अनऑथराइज्ड उपयोगकर्ता को 404 क्यों मिल सकता है?

यदि यह प्रकट करना कि कोई रिसोर्स मौजूद है संवेदनशील जानकारी लीक करता है, तो सर्वर अपने थ्रेट मॉडल के तहत 404 के साथ अस्तित्व को छिपा सकता है। ऑथराइज्ड कॉलर्स को अभी भी सुसंगत और ऑडिट योग्य लाइफ़साइकिल सिमेंटिक्स प्राप्त होने चाहिए।

सार्वजनिक स्रोत

संबंधित प्रश्न