Next.js 15 पूर्ण-स्टैक वेब ऐप · पाठ

दर सीमित करना और API त्रुटि प्रबंधन

दर सीमित करके अपने Next.js रूट हैंडलरों की सुरक्षा करें और सही HTTP स्थिति कोड के साथ एकसमान, सुव्यवस्थित त्रुटि प्रतिक्रियाएँ लौटाएँ।

पाठ 4, कुल 4 में से13 चरण

दर सीमित करना और API त्रुटि प्रबंधन, CoddyKit पर Next.js 15 पूर्ण-स्टैक वेब ऐप का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Next.js 15 पूर्ण-स्टैक वेब ऐप सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Next.js 15 पूर्ण-स्टैक वेब ऐप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

दर सीमा क्यों लगाएँ

सार्वजनिक API रूट दुरुपयोग के लिए खुले होते हैं: बार-बार पासवर्ड आज़माना, डेटा खुरचना और अनजाने में बहुत अधिक अनुरोध भेजना। दर सीमित करना यह तय करता है कि कोई क्लाइंट एक समय-खिड़की में कितने अनुरोध कर सकता है, जिससे आपका बैकएंड और बाहरी सेवा की कोटा सीमाएँ सुरक्षित रहती हैं।

क्लाइंट की पहचान करना

प्रत्येक क्लाइंट के अनुरोध गिनने के लिए आपको एक कुंजी चाहिए। सामान्य विकल्प IP पता, API कुंजी या प्रमाणित उपयोगकर्ता ID हैं। रूट हैंडलर में, अपने प्लेटफ़ॉर्म द्वारा सेट किए गए headers से IP पढ़ें।

export async function GET(req) {
  const ip = req.headers.get('x-forwarded-for') ?? 'unknown';
  return Response.json({ ip });
}

स्थिर-खिड़की काउंटर

सबसे सरल एल्गोरिदम प्रत्येक कुंजी के लिए एक निश्चित समय-खिड़की में अनुरोध गिनता है। गिनती सीमा से अधिक होने पर, खिड़की रीसेट होने तक आगे के अनुरोध अस्वीकार कर दिए जाते हैं।

function fixedWindow(store, key, limit, windowMs) {
  const now = Date.now();
  const entry = store[key] || { count: 0, reset: now + windowMs };
  if (now > entry.reset) { entry.count = 0; entry.reset = now + windowMs; }
  entry.count++;
  store[key] = entry;
  return entry.count <= limit;
}

सीमितकर्ता को आज़माना

स्थिर-खिड़की तर्क को स्थानीय रूप से चलाकर देखें कि वह पहले अनुरोध स्वीकार करता है और फिर रोकता है।

function fixedWindow(store, key, limit, windowMs) {
  const now = Date.now();
  const entry = store[key] || { count: 0, reset: now + windowMs };
  if (now > entry.reset) { entry.count = 0; entry.reset = now + windowMs; }
  entry.count++;
  store[key] = entry;
  return entry.count <= limit;
}
const store = {};
for (let i = 0; i < 4; i++) {
  console.log(i, fixedWindow(store, 'ip1', 3, 1000));
}

मेमोरी में बनाम वितरित

मेमोरी में रखा स्टोर हर cold start पर रीसेट हो जाता है और serverless instances के बीच साझा नहीं होता। वास्तविक परिनियोजन के लिए Redis (जैसे Upstash) जैसा साझा स्टोर उपयोग करें, ताकि सीमाएँ हर जगह सुसंगत रहें।

429 लौटाना

जब कोई क्लाइंट सीमा पार कर जाए, तो HTTP 429 Too Many Requests के साथ प्रतिक्रिया दें और Retry-After header भेजें, जो बताए कि दोबारा कब प्रयास करना है।

export async function POST(req) {
  if (!allowed) {
    return new Response('Rate limit exceeded', {
      status: 429,
      headers: { 'Retry-After': '60' },
    });
  }
  return Response.json({ ok: true });
}

त्रुटि का सुसंगत प्रारूप

जब हर विफलता का JSON प्रारूप एक जैसा हो, तो क्लाइंट त्रुटियों को अधिक आसानी से पार्स कर सकते हैं। एक छोटा envelope मानकीकृत करें।

function apiError(message, status, code) {
  return Response.json(
    { error: { message, code } },
    { status }
  );
}

त्रुटियों को स्थिति कोड से जोड़ना

कारण के अनुसार उपयुक्त स्थिति चुनें:

  • 400 गलत input
  • 401 authentication नहीं हुई
  • 403 authorization नहीं है
  • 404 नहीं मिला
  • 429 दर सीमा लागू
  • 500 सर्वर त्रुटि

अनपेक्षित त्रुटियों को पकड़ना

हैंडलर के तर्क को try/catch में लपेटें, ताकि अनियंत्रित अपवाद लीक हुई stack trace के बजाय नियंत्रित 500 बन जाए।

export async function GET() {
  try {
    const data = await loadData();
    return Response.json(data);
  } catch (e) {
    console.error(e);
    return Response.json({ error: { message: 'Internal error' } }, { status: 500 });
  }
}

पुनः उपयोग योग्य रैपर

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

function withGuards(handler) {
  return async (req) => {
    if (!checkLimit(req)) return apiError('Too many requests', 429);
    try { return await handler(req); }
    catch { return apiError('Internal error', 500); }
  };
}

आंतरिक विवरण कभी उजागर न करें

प्रोडक्शन में raw त्रुटि संदेश, stack trace या SQL विवरण क्लाइंट को कभी न भेजें। उन्हें सर्वर-साइड लॉग करें और एक स्थिर त्रुटि कोड के साथ सामान्य संदेश लौटाएँ।

त्वरित जाँच

कौन-सा HTTP स्थिति कोड और header यह बताने के लिए सबसे उपयुक्त है कि क्लाइंट ने दर सीमा पार कर ली है?

पुनरावलोकन

आपने अपने API रूट्स को अधिक सुरक्षित बनाया:

  • क्लाइंट की पहचान की और स्थिर-खिड़की सीमितकर्ता से अनुरोध गिने।
  • Retry-After के साथ 429 लौटाया और वितरित सीमाओं के लिए Redis को प्राथमिकता दी।
  • JSON त्रुटि envelope को मानकीकृत किया और कारणों को स्थिति कोड से जोड़ा।
  • अपवाद पकड़े और आंतरिक विवरण उजागर करने से बचा।
शुरुआत निःशुल्क

एआई शिक्षक के साथ TypeScript सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “दर सीमित करना और API त्रुटि प्रबंधन” पाठ निःशुल्क है?

हाँ — Next.js 15 पूर्ण-स्टैक वेब ऐप अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “दर सीमित करना और API त्रुटि प्रबंधन” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Next.js 15 पूर्ण-स्टैक वेब ऐप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“दर सीमित करना और API त्रुटि प्रबंधन” में मैं क्या सीखूँगा?

दर सीमित करके अपने Next.js रूट हैंडलरों की सुरक्षा करें और सही HTTP स्थिति कोड के साथ एकसमान, सुव्यवस्थित त्रुटि प्रतिक्रियाएँ लौटाएँ। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Next.js 15 पूर्ण-स्टैक वेब ऐप का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Next.js 15 पूर्ण-स्टैक वेब ऐप शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Next.js 15 पूर्ण-स्टैक वेब ऐप शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“दर सीमित करना और API त्रुटि प्रबंधन” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Next.js 15 पूर्ण-स्टैक वेब ऐप पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Next.js 15 पूर्ण-स्टैक वेब ऐप पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. API रूट हैंडलर बनाना
  2. अनुरोध सत्यापन और सुरक्षा
  3. बाहरी सेवाओं का एकीकरण
  4. दर सीमित करना और API त्रुटि प्रबंधन
← Next.js 15 पूर्ण-स्टैक वेब ऐप पर वापस जाएँ