استفاده از Next.js به‌عنوان بک‌اند برای فرانت‌اند – هندلرهای عمومی، پردازش داده، و پراکسی‌سازی

Next.js از الگوی Backend for Frontend پشتیبانی می‌کند و به شما اجازه می‌دهد هندلرهای عمومی برای پاسخ به درخواست‌های HTTP بسازید. این مقاله نحوهٔ استفاده از Route Handler، پراکسی، و API Routes را برای ساخت لایه بک‌اند امن و منعطف توضیح می‌دهد — همراه با مثال‌هایی برای پردازش داده، اعتبارسنجی درخواست، و ارائهٔ انواع محتوا.

Backend for FrontendRoute HandlerProxyNextRequestNextResponse

~4 دقیقه مطالعه · آخرین به‌روزرسانی ۴ آبان ۱۴۰۴

مقدمه


Next.js از الگوی Backend for Frontend پشتیبانی می‌کند و به شما اجازه می‌دهد هندلرهای عمومی بسازید که به درخواست‌های HTTP پاسخ دهند و هر نوع محتوایی را بازگردانند — نه فقط HTML. این هندلرها می‌توانند به منابع داده متصل شوند، عملیات انجام دهند، و به‌عنوان لایه API سبک عمل کنند.


شروع پروژه


برای ساخت پروژه جدید با قابلیت بک‌اند:

npx create-next-app@latest --api

این دستور فایل نمونه route.ts را در پوشه app/ ایجاد می‌کند.


Route Handler چیست؟


Route Handlerها هندلرهای عمومی HTTP هستند. آن‌ها را با فایل route.ts یا route.js در مسیر دلخواه تعریف کنید:

// app/api/route.ts
export function GET(request: Request) {
  return new Response('سلام از بک‌اند')
}

مدیریت خطا


export async function POST(request: Request) {
  try {
    await submit(request)
    return new Response(null, { status: 204 })
  } catch (reason) {
    const message = reason instanceof Error ? reason.message : 'خطای غیرمنتظره'
    return new Response(message, { status: 500 })
  }
}

نکته: از ارسال پیام‌های خطای حساس به کلاینت خودداری کنید.


ارائهٔ محتوای غیر UI


Route Handlerها می‌توانند JSON، XML، تصاویر، فایل‌ها و متن ساده سرو کنند. مسیرهای رایج شامل موارد زیر هستند:

  • sitemap.xml
  • manifest.json
  • robots.txt
  • rss.xml

مثال: ارائهٔ فید RSS:

// app/rss.xml/route.ts
export async function GET(request: Request) {
  const rssData = await fetchRSS()
  const rssFeed = `<rss>...</rss>`
  return new Response(rssFeed, {
    headers: { 'content-type': 'application/xml' },
  })
}

خواندن بدنهٔ درخواست


برای خواندن داده‌ها از request.json()، request.formData() یا request.text() استفاده کنید:

export async function POST(request: Request) {
  const data = await request.json()
  return Response.json({ data })
}

اعتبارسنجی ورودی


export async function POST(request: Request) {
  const formData = await request.formData()
  const email = formData.get('email')
  const contents = formData.get('contents')

  try {
    await validateInputs({ email, contents })
    const info = await sendMail({ email, contents })
    return Response.json({ messageId: info.messageId })
  } catch (reason) {
    return new Response('خطا', { status: 500 })
  }
}

کلون کردن درخواست


بدنهٔ درخواست فقط یک‌بار قابل خواندن است. اگر نیاز به خواندن مجدد دارید، آن را کلون کنید:

const cloned = request.clone()
await cloned.body()

پردازش و تبدیل داده


Route Handlerها می‌توانند داده‌ها را از منابع مختلف ترکیب و تبدیل کنند:

export async function POST(request: Request) {
  const body = await request.json()
  const params = new URLSearchParams({ lat: body.lat, lng: body.lng })
  const response = await fetch(`${weatherEndpoint}?${params}`)
  const raw = await response.text()
  const parsed = parseWeatherData(raw)
  return new Response(parsed, { status: 200 })
}

پراکسی‌سازی درخواست‌ها


می‌توانید از Route Handler برای پراکسی‌سازی به بک‌اند دیگر استفاده کنید:

// app/api/[...slug]/route.ts
export async function POST(request: Request, { params }) {
  const isValid = await isValidRequest(request.clone())
  if (!isValid) return new Response(null, { status: 400 })

  const pathname = params.slug.join('/')
  const proxyURL = new URL(pathname, 'https://nextjs.org')
  const proxyRequest = new Request(proxyURL, request)
  return fetch(proxyRequest)
}

استفاده از NextRequest و NextResponse


Next.js نسخهٔ توسعه‌یافته‌ای از Web APIها ارائه می‌دهد:

  • NextRequest: شامل nextUrl برای دسترسی آسان به مسیر و پارامترها
  • NextResponse: شامل متدهایی مانند json()، redirect() و rewrite()

export async function GET(request: NextRequest) {
  const url = request.nextUrl
  if (url.searchParams.get('redirect')) {
    return NextResponse.redirect(new URL('/', request.url))
  }
  return NextResponse.json({ pathname: url.pathname })
}

جمع‌بندی


Next.js ابزارهای قدرتمندی برای ساخت لایه بک‌اند در اختیار شما قرار می‌دهد. با استفاده از Route Handler، پراکسی، و APIهای توسعه‌یافته، می‌توانید داده‌ها را پردازش کرده، محتوا سرو کنید، و با سیستم‌های خارجی تعامل داشته باشید — همه در دل ساختار app.


نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

مسیریابی پیشرفته و هوک‌های عملکرد در Next.js — راهنمای توسعه‌دهنده برای App Router

Next.js مجموعه‌ای غنی از هوک‌های کلاینت و ابزارهای کش و ناوبری را در اختیار توسعه‌دهندگان قرار می‌دهد. از خواندن پارامترهای مسیر تا گزارش Web Vitals و مدیریت کش، این مقاله مهم‌ترین ابزارهای App Router را با مثال‌های کاربردی معرفی می‌کند.

ادامه

مدیریت احراز هویت و کش در Next.js — راهنمای توسعه‌دهنده برای امنیت و عملکرد پویا

Next.js با معرفی قابلیت‌های آزمایشی جدید، امکان کنترل دقیق‌تر دسترسی و کش داده‌ها را فراهم کرده است. تابع unauthorized برای مدیریت خطای 401 و هدایت کاربران به صفحه ورود، unstable_cache برای کش هوشمند عملیات سنگین، updateTag برای بازسازی آنی داده‌ها، و useLinkStatus برای نمایش وضعیت ناوبری استفاده می‌شوند. این مقاله نحوه استفاده از این ابزارها را با مثال‌های کاربردی و نکات مهم بررسی می‌کند.

ادامه

redirect و refresh در Next.js — ریدایرکت‌های هوشمند و تازه‌سازی مسیر در Server Actions

تابع redirect در Next.js برای هدایت کاربر به مسیر جدید استفاده می‌شود و بسته به نوع استفاده، پاسخ HTTP با وضعیت 307 یا 303 ارسال می‌کند. این تابع در Server Components، Client Components، Route Handlers و Server Actions قابل استفاده است. تابع refresh نیز برای تازه‌سازی مسیر کلاینت از درون Server Action استفاده می‌شود. این مقاله نحوه استفاده از هر دو تابع را با مثال‌های کاربردی و نکات مهم توضیح می‌دهد.

ادامه

Next.js با معرفی NextRequest و NextResponse، APIهای Request و Response مرورگر را گسترش داده و ابزارهای قدرتمندی برای مدیریت کوکی‌ها، هدرها، ریدایرکت‌ها، بازنویسی مسیرها و پاسخ‌های JSON فراهم کرده است. این مقاله نحوه استفاده از این ابزارها را با مثال‌های کاربردی و نکات امنیتی توضیح می‌دهد.

Next.js با معرفی NextRequest و NextResponse، APIهای Request و Response مرورگر را گسترش داده و ابزارهای قدرتمندی برای مدیریت کوکی‌ها، هدرها، ریدایرکت‌ها، بازنویسی مسیرها و پاسخ‌های JSON فراهم کرده است. این مقاله نحوه استفاده از این ابزارها را با مثال‌های کاربردی و نکات امنیتی توضیح می‌دهد.

ادامه

headers، ImageResponse، notFound و permanentRedirect در Next.js — مدیریت درخواست‌ها، تولید تصویر، خطا و ریدایرکت

Next.js ابزارهای قدرتمندی برای مدیریت درخواست‌ها و پاسخ‌ها در کامپوننت‌های سروری فراهم کرده است. تابع headers برای خواندن هدرهای HTTP ورودی، ImageResponse برای تولید تصاویر داینامیک، notFound برای نمایش صفحه خطای 404، و permanentRedirect برای ریدایرکت دائمی کاربران استفاده می‌شوند. این مقاله نحوه استفاده از هر یک را با مثال‌های کاربردی توضیح می‌دهد.

ادامه

راهنمای کامل استفاده از metadata و generateMetadata در Next.js

در نسخه‌های مدرن Next.js، مدیریت metadata صفحات بسیار قدرتمندتر و ساده‌تر شده است. metadata به‌صورت خودکار در تگ <head> صفحات تزریق می‌شود و نقش مهمی در SEO، اشتراک‌گذاری اجتماعی و تجربه کاربری دارد. این مقاله دو روش اصلی تعریف metadata را بررسی می‌کند: استفاده از آبجکت ثابت metadata و تابع داینامیک generateMetadata.

ادامه