Next.js रूट हैंडलर्स का उपयोग करके शक्तिशाली एपीआई एंडपॉइंट बनाना सीखें। यह गाइड बुनियादी सेटअप से लेकर उन्नत तकनीकों तक सब कुछ कवर करती है, जिसमें व्यावहारिक उदाहरण और सर्वोत्तम प्रथाएं शामिल हैं।
Next.js रूट हैंडलर्स: एपीआई एंडपॉइंट बनाने के लिए एक व्यापक गाइड
Next.js ने अपने शक्तिशाली फीचर्स जैसे सर्वर-साइड रेंडरिंग, स्टैटिक साइट जनरेशन, और अब, रूट हैंडलर्स के साथ वेब एप्लिकेशन बनाने के तरीके में क्रांति ला दी है। रूट हैंडलर्स आपके Next.js एप्लिकेशन के भीतर सीधे एपीआई एंडपॉइंट बनाने का एक लचीला और कुशल तरीका प्रदान करते हैं। यह गाइड रूट हैंडलर्स की अवधारणा, उनके लाभ, और मजबूत एपीआई बनाने के लिए उनका प्रभावी ढंग से उपयोग करने के तरीके की पड़ताल करता है।
Next.js रूट हैंडलर्स क्या हैं?
रूट हैंडलर्स Next.js प्रोजेक्ट की app
डायरेक्टरी के भीतर परिभाषित फ़ंक्शन हैं जो आने वाले HTTP अनुरोधों को संभालते हैं। पुराने pages/api
दृष्टिकोण (जो API रूट्स का उपयोग करता है) के विपरीत, रूट हैंडलर्स आपके रिएक्ट कंपोनेंट्स के साथ एपीआई एंडपॉइंट को परिभाषित करने का एक अधिक सुव्यवस्थित और लचीला तरीका प्रदान करते हैं। वे अनिवार्य रूप से सर्वरलेस फ़ंक्शन हैं जो एज पर या आपके चुने हुए सर्वर वातावरण में निष्पादित होते हैं।
रूट हैंडलर्स को अपने Next.js एप्लिकेशन के बैकएंड लॉजिक के रूप में सोचें, जो अनुरोधों को संसाधित करने, डेटाबेस के साथ इंटरैक्ट करने और प्रतिक्रियाएं लौटाने के लिए जिम्मेदार हैं।
रूट हैंडलर्स का उपयोग करने के लाभ
- Colocation: रूट हैंडलर्स सीधे आपके रिएक्ट कंपोनेंट्स के साथ
app
डायरेक्टरी में रहते हैं, जो बेहतर संगठन और कोड रखरखाव को बढ़ावा देता है। - TypeScript Support: बिल्ट-इन TypeScript सपोर्ट टाइप सुरक्षा और बेहतर डेवलपर अनुभव सुनिश्चित करता है।
- Middleware Integration: प्रमाणीकरण, प्राधिकरण और अनुरोध सत्यापन जैसे कार्यों के लिए मिडलवेयर को आसानी से एकीकृत करें।
- Streaming Support: रूट हैंडलर्स डेटा स्ट्रीम कर सकते हैं, जिससे आप प्रतिक्रियाओं को वृद्धिशील रूप से भेज सकते हैं, जो बड़े डेटासेट या लंबे समय तक चलने वाली प्रक्रियाओं के लिए फायदेमंद है।
- Edge Functions: वैश्विक CDNs का लाभ उठाते हुए, अपने उपयोगकर्ताओं के करीब कम-विलंबता प्रतिक्रियाओं के लिए रूट हैंडलर्स को एज फ़ंक्शंस के रूप में तैनात करें।
- Simplified API Design: रूट हैंडलर्स अनुरोधों और प्रतिक्रियाओं को संभालने के लिए एक स्वच्छ और सहज एपीआई प्रदान करते हैं।
- Server Actions Integration: सर्वर एक्शन के साथ मजबूत एकीकरण आपके क्लाइंट-साइड कंपोनेंट्स और सर्वर-साइड लॉजिक के बीच सहज संचार की अनुमति देता है।
अपना Next.js प्रोजेक्ट सेट अप करना
रूट हैंडलर्स में गोता लगाने से पहले, सुनिश्चित करें कि आपके पास app
डायरेक्टरी के साथ एक Next.js प्रोजेक्ट सेट अप है। यदि आप एक नया प्रोजेक्ट शुरू कर रहे हैं, तो निम्न कमांड का उपयोग करें:
npx create-next-app@latest my-nextjs-app
नए रूटिंग सिस्टम को सक्षम करने के लिए सेटअप प्रक्रिया के दौरान app
डायरेक्टरी चुनें।
अपना पहला रूट हैंडलर बनाना
आइए एक साधारण एपीआई एंडपॉइंट बनाएं जो एक JSON प्रतिक्रिया लौटाता है। app
डायरेक्टरी के भीतर एक नई डायरेक्टरी बनाएं, उदाहरण के लिए, /app/api/hello
। इस डायरेक्टरी के अंदर, route.ts
(या route.js
यदि आप TypeScript का उपयोग नहीं कर रहे हैं) नामक एक फ़ाइल बनाएं।
यहां आपके पहले रूट हैंडलर के लिए कोड है:
// app/api/hello/route.ts
import { NextResponse } from 'next/server';
export async function GET(request: Request) {
return NextResponse.json({ message: 'Next.js रूट हैंडलर्स की ओर से नमस्ते!' });
}
स्पष्टीकरण:
import { NextResponse } from 'next/server';
:NextResponse
ऑब्जेक्ट को इम्पोर्ट करता है, जिसका उपयोग API प्रतिक्रियाओं के निर्माण के लिए किया जाता है।export async function GET(request: Request) { ... }
: एक एसिंक्रोनस फ़ंक्शन को परिभाषित करता है जो/api/hello
एंडपॉइंट पर GET अनुरोधों को संभालता है।request
पैरामीटर आने वाले अनुरोध ऑब्जेक्ट तक पहुंच प्रदान करता है।return NextResponse.json({ message: 'Next.js रूट हैंडलर्स की ओर से नमस्ते!' });
: एक संदेश के साथ एक JSON प्रतिक्रिया बनाता है और इसेNextResponse.json()
का उपयोग करके लौटाता है।
अब, आप इस एंडपॉइंट को अपने ब्राउज़र में /api/hello
पर नेविगेट करके या curl
या Postman
जैसे टूल का उपयोग करके एक्सेस कर सकते हैं।
विभिन्न HTTP मेथड्स को संभालना
रूट हैंडलर्स विभिन्न HTTP मेथड्स जैसे GET, POST, PUT, DELETE, PATCH, और OPTIONS का समर्थन करते हैं। आप एक ही route.ts
फ़ाइल के भीतर प्रत्येक मेथड के लिए अलग-अलग फ़ंक्शन परिभाषित कर सकते हैं।
// app/api/users/route.ts
import { NextResponse } from 'next/server';
export async function GET(request: Request) {
// डेटाबेस से सभी उपयोगकर्ताओं को पुनः प्राप्त करने का लॉजिक
const users = [{ id: 1, name: 'John Doe' }, { id: 2, name: 'Jane Smith' }]; // उदाहरण डेटा
return NextResponse.json(users);
}
export async function POST(request: Request) {
const data = await request.json(); // अनुरोध बॉडी को JSON के रूप में पार्स करें
// 'data' का उपयोग करके डेटाबेस में एक नया उपयोगकर्ता बनाने का लॉजिक
const newUser = { id: 3, name: data.name, email: data.email }; // उदाहरण
return NextResponse.json(newUser, { status: 201 }); // नए उपयोगकर्ता को 201 क्रिएटेड स्टेटस कोड के साथ लौटाएं
}
स्पष्टीकरण:
GET
फ़ंक्शन उपयोगकर्ताओं की एक सूची (यहां सिम्युलेटेड) प्राप्त करता है और उन्हें JSON प्रतिक्रिया के रूप में लौटाता है।POST
फ़ंक्शन अनुरोध बॉडी को JSON के रूप में पार्स करता है, एक नया उपयोगकर्ता बनाता है (सिम्युलेटेड), और नए उपयोगकर्ता को 201 क्रिएटेड स्टेटस कोड के साथ लौटाता है।
रिक्वेस्ट डेटा तक पहुंच
request
ऑब्जेक्ट आने वाले अनुरोध के बारे में विभिन्न जानकारी तक पहुंच प्रदान करता है, जिसमें हेडर, क्वेरी पैरामीटर और अनुरोध बॉडी शामिल हैं।
हेडर्स
आप request.headers
प्रॉपर्टी का उपयोग करके अनुरोध हेडर्स तक पहुंच सकते हैं:
export async function GET(request: Request) {
const userAgent = request.headers.get('user-agent');
console.log('User Agent:', userAgent);
return NextResponse.json({ userAgent });
}
क्वेरी पैरामीटर्स
क्वेरी पैरामीटर्स तक पहुंचने के लिए, आप URL
कंस्ट्रक्टर का उपयोग कर सकते हैं:
export async function GET(request: Request) {
const url = new URL(request.url);
const searchParams = new URLSearchParams(url.search);
const id = searchParams.get('id');
console.log('ID:', id);
return NextResponse.json({ id });
}
रिक्वेस्ट बॉडी
POST, PUT, और PATCH अनुरोधों के लिए, आप सामग्री के प्रकार के आधार पर, request.json()
या request.text()
विधियों का उपयोग करके अनुरोध बॉडी तक पहुंच सकते हैं।
export async function POST(request: Request) {
const data = await request.json();
console.log('Data:', data);
return NextResponse.json({ receivedData: data });
}
प्रतिक्रियाएं लौटाना
NextResponse
ऑब्जेक्ट का उपयोग API प्रतिक्रियाओं के निर्माण के लिए किया जाता है। यह हेडर्स, स्टेटस कोड और प्रतिक्रिया बॉडी सेट करने के लिए कई तरीके प्रदान करता है।
JSON प्रतिक्रियाएं
JSON प्रतिक्रियाएं लौटाने के लिए NextResponse.json()
विधि का उपयोग करें:
return NextResponse.json({ message: 'Success!', data: { name: 'John Doe' } }, { status: 200 });
टेक्स्ट प्रतिक्रियाएं
सादे टेक्स्ट प्रतिक्रियाएं लौटाने के लिए new Response()
कंस्ट्रक्टर का उपयोग करें:
return new Response('Hello, world!', { status: 200, headers: { 'Content-Type': 'text/plain' } });
रीडायरेक्ट्स
उपयोगकर्ताओं को एक अलग URL पर रीडायरेक्ट करने के लिए NextResponse.redirect()
का उपयोग करें:
import { redirect } from 'next/navigation';
import { NextResponse } from 'next/server';
export async function GET(request: Request) {
return NextResponse.redirect(new URL('/new-location', request.url));
}
हेडर्स सेट करना
आप NextResponse.json()
या new Response()
में headers
विकल्प का उपयोग करके कस्टम हेडर्स सेट कर सकते हैं:
return NextResponse.json({ message: 'Success!' }, { status: 200, headers: { 'Cache-Control': 'no-cache' } });
मिडलवेयर इंटीग्रेशन
मिडलवेयर आपको अपने रूट हैंडलर द्वारा अनुरोध को संभालने से पहले कोड चलाने की अनुमति देता है। यह प्रमाणीकरण, प्राधिकरण, लॉगिंग और अन्य क्रॉस-कटिंग चिंताओं के लिए उपयोगी है।
मिडलवेयर बनाने के लिए, app
डायरेक्टरी या किसी सबडायरेक्टरी में middleware.ts
(या middleware.js
) नामक एक फ़ाइल बनाएं। मिडलवेयर उस डायरेक्टरी और उसकी सबडायरेक्टरी के भीतर सभी रूट्स पर लागू होगा।
// app/middleware.ts
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';
export function middleware(request: NextRequest) {
const token = request.cookies.get('auth-token');
if (!token) {
return NextResponse.redirect(new URL('/login', request.url));
}
return NextResponse.next();
}
export const config = {
matcher: ['/protected/:path*'], // इस मिडलवेयर को /protected/ से शुरू होने वाले पाथ पर लागू करें
};
स्पष्टीकरण:
middleware
फ़ंक्शन अनुरोध कुकीज़ में प्रमाणीकरण टोकन की जांच करता है।- यदि टोकन गायब है, तो यह उपयोगकर्ता को लॉगिन पृष्ठ पर रीडायरेक्ट करता है।
- अन्यथा, यह अनुरोध को रूट हैंडलर पर आगे बढ़ने की अनुमति देता है।
config
ऑब्जेक्ट निर्दिष्ट करता है कि यह मिडलवेयर केवल/protected/
से शुरू होने वाले रूट्स पर लागू होना चाहिए।
त्रुटि प्रबंधन (Error Handling)
मजबूत एपीआई बनाने के लिए उचित त्रुटि प्रबंधन महत्वपूर्ण है। आप अपवादों को संभालने और उचित त्रुटि प्रतिक्रियाएं लौटाने के लिए try...catch
ब्लॉक का उपयोग कर सकते हैं।
export async function GET(request: Request) {
try {
// एक त्रुटि का अनुकरण करें
throw new Error('Something went wrong!');
} catch (error: any) {
console.error('Error:', error);
return NextResponse.json({ error: error.message }, { status: 500 });
}
}
स्पष्टीकरण:
try...catch
ब्लॉक किसी भी अपवाद को पकड़ता है जो रूट हैंडलर के भीतर होता है।catch
ब्लॉक में, त्रुटि को लॉग किया जाता है, और 500 आंतरिक सर्वर त्रुटि स्थिति कोड के साथ एक त्रुटि प्रतिक्रिया लौटाई जाती है।
स्ट्रीमिंग प्रतिक्रियाएं
रूट हैंडलर्स स्ट्रीमिंग प्रतिक्रियाओं का समर्थन करते हैं, जो आपको क्लाइंट को वृद्धिशील रूप से डेटा भेजने की अनुमति देता है। यह विशेष रूप से बड़े डेटासेट या लंबे समय तक चलने वाली प्रक्रियाओं के लिए उपयोगी है।
import { Readable } from 'stream';
import { NextResponse } from 'next/server';
async function* generateData() {
for (let i = 0; i < 10; i++) {
await new Promise(resolve => setTimeout(resolve, 500)); // देरी का अनुकरण करें
yield `Data chunk ${i}\n`;
}
}
export async function GET(request: Request) {
const readableStream = Readable.from(generateData());
return new Response(readableStream, {
headers: { 'Content-Type': 'text/plain; charset=utf-8' },
});
}
स्पष्टीकरण:
generateData
फ़ंक्शन एक एसिंक्रोनस जनरेटर है जो देरी के साथ डेटा चंक्स उत्पन्न करता है।Readable.from()
विधि जनरेटर से एक पठनीय स्ट्रीम बनाती है।Response
ऑब्जेक्ट को पठनीय स्ट्रीम के साथ बॉडी के रूप में बनाया गया है, औरContent-Type
हेडर कोtext/plain
पर सेट किया गया है।
प्रमाणीकरण और प्राधिकरण (Authentication and Authorization)
अपने एपीआई एंडपॉइंट्स को सुरक्षित करना महत्वपूर्ण है। आप मिडलवेयर का उपयोग करके या सीधे अपने रूट हैंडलर्स के भीतर प्रमाणीकरण और प्राधिकरण लागू कर सकते हैं।
प्रमाणीकरण (Authentication)
प्रमाणीकरण अनुरोध करने वाले उपयोगकर्ता की पहचान की पुष्टि करता है। सामान्य प्रमाणीकरण विधियों में शामिल हैं:
- JWT (JSON Web Tokens): सफल लॉगिन पर एक टोकन उत्पन्न करें और बाद के अनुरोधों पर इसे सत्यापित करें।
- Session-based Authentication: सत्र पहचानकर्ताओं को संग्रहीत करने के लिए कुकीज़ का उपयोग करें और प्रत्येक अनुरोध पर उन्हें सत्यापित करें।
- OAuth: प्रमाणीकरण को Google या Facebook जैसे किसी तीसरे पक्ष के प्रदाता को सौंपें।
यहाँ मिडलवेयर का उपयोग करके JWT प्रमाणीकरण का एक उदाहरण है:
// app/middleware.ts
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';
import jwt from 'jsonwebtoken';
const secret = process.env.JWT_SECRET || 'your-secret-key'; // एक मजबूत, यादृच्छिक रूप से उत्पन्न सीक्रेट से बदलें
export function middleware(request: NextRequest) {
const token = request.cookies.get('auth-token')?.value;
if (!token) {
return NextResponse.json({ message: 'Authentication required' }, { status: 401 });
}
try {
jwt.verify(token, secret);
return NextResponse.next();
} catch (error) {
return NextResponse.json({ message: 'Invalid token' }, { status: 401 });
}
}
export const config = {
matcher: ['/api/protected/:path*'],
};
प्राधिकरण (Authorization)
प्राधिकरण यह निर्धारित करता है कि एक उपयोगकर्ता किन संसाधनों तक पहुंच सकता है। यह आमतौर पर भूमिकाओं या अनुमतियों पर आधारित होता है।
आप अपने रूट हैंडलर्स के भीतर उपयोगकर्ता की भूमिकाओं या अनुमतियों की जांच करके और यदि उनके पास पहुंच नहीं है तो एक त्रुटि लौटाकर प्राधिकरण लागू कर सकते हैं।
// app/api/admin/route.ts
import { NextResponse } from 'next/server';
export async function GET(request: Request) {
// मान लें कि आपके पास टोकन या सत्र से उपयोगकर्ता की भूमिका प्राप्त करने के लिए एक फ़ंक्शन है
const userRole = await getUserRole(request);
if (userRole !== 'admin') {
return NextResponse.json({ message: 'Unauthorized' }, { status: 403 });
}
// व्यवस्थापक डेटा प्राप्त करने का लॉजिक
const adminData = { message: 'Admin data' };
return NextResponse.json(adminData);
}
async function getUserRole(request: Request): Promise {
// अनुरोध से उपयोगकर्ता की भूमिका निकालने के लिए अपने वास्तविक लॉजिक से बदलें
// इसमें JWT टोकन को सत्यापित करना या सत्र की जांच करना शामिल हो सकता है
return 'admin'; // उदाहरण: प्रदर्शन के लिए हार्डकोडेड भूमिका
}
रूट हैंडलर्स को डिप्लॉय करना
रूट हैंडलर्स आपके चुने हुए होस्टिंग प्रदाता पर सर्वरलेस फ़ंक्शंस के रूप में तैनात किए जाते हैं। Next.js वर्सेल, नेटलिफाई, AWS, और अधिक सहित विभिन्न डिप्लॉयमेंट प्लेटफॉर्म का समर्थन करता है।
वर्सल के लिए, डिप्लॉयमेंट अपनी Git रिपॉजिटरी को वर्सेल से जोड़ने और अपने कोड को पुश करने जितना सरल है। वर्सेल स्वचालित रूप से आपके Next.js प्रोजेक्ट का पता लगाता है और आपके रूट हैंडलर्स को सर्वरलेस फ़ंक्शंस के रूप में डिप्लॉय करता है।
उन्नत तकनीकें
एज फ़ंक्शंस (Edge Functions)
रूट हैंडलर्स को एज फ़ंक्शंस के रूप में तैनात किया जा सकता है, जो आपके उपयोगकर्ताओं के करीब, एक CDN के किनारे पर निष्पादित होते हैं। यह विलंबता को काफी कम कर सकता है और प्रदर्शन में सुधार कर सकता है।
एक रूट हैंडलर को एज फ़ंक्शन के रूप में तैनात करने के लिए, अपनी route.ts
फ़ाइल में edge
रनटाइम जोड़ें:
export const runtime = 'edge';
import { NextResponse } from 'next/server';
export async function GET(request: Request) {
return NextResponse.json({ message: 'एज से नमस्ते!' });
}
सर्वर एक्शन (Server Actions)
सर्वर एक्शन आपको अपने रिएक्ट कंपोनेंट्स से सीधे सर्वर-साइड कोड निष्पादित करने की अनुमति देते हैं। रूट हैंडलर्स और सर्वर एक्शन एक साथ सहजता से काम करते हैं, जिससे आप आसानी से जटिल एप्लिकेशन बना सकते हैं।
यहाँ एक रूट हैंडलर को कॉल करने के लिए सर्वर एक्शन का उपयोग करने का एक उदाहरण है:
// app/components/MyComponent.tsx
'use client';
import { useState } from 'react';
import { useRouter } from 'next/navigation';
async function handleSubmit(data: FormData) {
'use server';
const name = data.get('name');
const email = data.get('email');
const response = await fetch('/api/users', {
method: 'POST',
body: JSON.stringify({ name, email }),
});
if (response.ok) {
router.refresh(); // परिवर्तनों को दर्शाने के लिए पेज को रीफ्रेश करें
}
}
export default function MyComponent() {
const router = useRouter();
return (
);
}
कैशिंग (Caching)
कैशिंग आपके एपीआई एंडपॉइंट्स के प्रदर्शन में काफी सुधार कर सकती है। आप Cache-Control
हेडर का उपयोग यह नियंत्रित करने के लिए कर सकते हैं कि आपकी प्रतिक्रियाएं ब्राउज़रों और CDNs द्वारा कैसे कैश की जाती हैं।
return NextResponse.json({ message: 'Success!' }, { status: 200, headers: { 'Cache-Control': 'public, max-age=3600' } });
यह उदाहरण Cache-Control
हेडर को public, max-age=3600
पर सेट करता है, जो ब्राउज़रों और CDNs को एक घंटे के लिए प्रतिक्रिया को कैश करने के लिए कहता है।
सर्वोत्तम प्रथाएं (Best Practices)
- TypeScript का उपयोग करें: कोड की गुणवत्ता में सुधार और त्रुटियों को रोकने के लिए TypeScript की टाइप सुरक्षा का लाभ उठाएं।
- अनुरोधों को मान्य करें: डेटा अखंडता सुनिश्चित करने और दुर्भावनापूर्ण इनपुट को रोकने के लिए आने वाले अनुरोधों को मान्य करें।
- त्रुटियों को शालीनता से संभालें: ग्राहकों को सूचनात्मक त्रुटि संदेश प्रदान करने के लिए उचित त्रुटि प्रबंधन लागू करें।
- अपने एंडपॉइंट्स को सुरक्षित करें: अपने एपीआई एंडपॉइंट्स की सुरक्षा के लिए प्रमाणीकरण और प्राधिकरण लागू करें।
- मिडलवेयर का उपयोग करें: प्रमाणीकरण, लॉगिंग और अनुरोध सत्यापन जैसी क्रॉस-कटिंग चिंताओं के लिए मिडलवेयर का उपयोग करें।
- प्रतिक्रियाओं को कैश करें: अपने एपीआई एंडपॉइंट्स के प्रदर्शन को बेहतर बनाने के लिए कैशिंग का उपयोग करें।
- अपने एपीआई की निगरानी करें: समस्याओं को जल्दी पहचानने और हल करने के लिए अपने एपीआई की निगरानी करें।
- अपने एपीआई का दस्तावेजीकरण करें: अन्य डेवलपर्स के लिए उपयोग करना आसान बनाने के लिए अपने एपीआई का दस्तावेजीकरण करें। एपीआई दस्तावेजीकरण के लिए स्वैगर/ओपनएपीआई जैसे उपकरणों का उपयोग करने पर विचार करें।
वास्तविक-दुनिया के उदाहरण
यहाँ कुछ वास्तविक-दुनिया के उदाहरण दिए गए हैं कि रूट हैंडलर्स का उपयोग कैसे किया जा सकता है:
- ई-कॉमर्स एपीआई: उत्पादों, ऑर्डर और उपयोगकर्ताओं के प्रबंधन के लिए एपीआई एंडपॉइंट बनाएं।
- सोशल मीडिया एपीआई: ट्वीट्स पोस्ट करने, उपयोगकर्ताओं को फॉलो करने और टाइमलाइन प्राप्त करने के लिए एपीआई एंडपॉइंट बनाएं।
- कंटेंट मैनेजमेंट सिस्टम (CMS) एपीआई: सामग्री, उपयोगकर्ताओं और सेटिंग्स के प्रबंधन के लिए एपीआई एंडपॉइंट बनाएं।
- डेटा एनालिटिक्स एपीआई: डेटा एकत्र करने और उसका विश्लेषण करने के लिए एपीआई एंडपॉइंट बनाएं। उदाहरण के लिए, एक रूट हैंडलर विभिन्न वेबसाइटों पर ट्रैकिंग पिक्सल से डेटा प्राप्त कर सकता है और रिपोर्टिंग के लिए जानकारी एकत्र कर सकता है।
अंतर्राष्ट्रीय ई-कॉमर्स उदाहरण: एक रूट हैंडलर का उपयोग उपयोगकर्ता के देश के आधार पर उत्पाद मूल्य निर्धारण को पुनः प्राप्त करने के लिए किया जाता है। एंडपॉइंट उपयोगकर्ता के स्थान को निर्धारित करने के लिए अनुरोध के जियोलोकेशन (आईपी पते से व्युत्पन्न) का उपयोग कर सकता है और उपयुक्त मुद्रा में कीमतें लौटा सकता है। यह एक स्थानीयकृत खरीदारी अनुभव में योगदान देता है।
वैश्विक प्रमाणीकरण उदाहरण: एक रूट हैंडलर दुनिया भर के उपयोगकर्ताओं के लिए मल्टी-फैक्टर ऑथेंटिकेशन (MFA) लागू करता है। इसमें विभिन्न क्षेत्रों के गोपनीयता नियमों और दूरसंचार अवसंरचनाओं का सम्मान करते हुए एसएमएस कोड भेजना या ऑथेंटिकेटर ऐप्स का उपयोग करना शामिल हो सकता है।
बहुभाषी सामग्री वितरण: एक रूट हैंडलर उपयोगकर्ता की पसंदीदा भाषा में सामग्री वितरित करता है। यह अनुरोध में `Accept-Language` हेडर से निर्धारित किया जा सकता है। यह उदाहरण उचित UTF-8 एन्कोडिंग और जहां उपयुक्त हो, दाएं-से-बाएं भाषा समर्थन की आवश्यकता पर प्रकाश डालता है।
निष्कर्ष
Next.js रूट हैंडलर्स आपके Next.js एप्लिकेशन के भीतर सीधे एपीआई एंडपॉइंट बनाने का एक शक्तिशाली और लचीला तरीका प्रदान करते हैं। रूट हैंडलर्स का लाभ उठाकर, आप आसानी से मजबूत एपीआई बना सकते हैं, अपने बैकएंड लॉजिक को अपने रिएक्ट कंपोनेंट्स के साथ सह-स्थापित कर सकते हैं, और मिडलवेयर, स्ट्रीमिंग और एज फ़ंक्शंस जैसी सुविधाओं का लाभ उठा सकते हैं।
इस व्यापक गाइड ने बुनियादी सेटअप से लेकर उन्नत तकनीकों तक सब कुछ कवर किया है। इस गाइड में उल्लिखित सर्वोत्तम प्रथाओं का पालन करके, आप उच्च-गुणवत्ता वाले एपीआई बना सकते हैं जो सुरक्षित, प्रदर्शनशील और रखरखाव योग्य हैं।