route.ts در Next.js — ساخت API سفارشی با Web Request و Response

ساخت API سفارشی با Web Request و Response

route.tsNextRequestWeb APIStreamingWebhooks

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

1. route.ts چیست؟


فایل‌های route.ts در Next.js به شما امکان می‌دهند برای مسیرهای خاص، هندلرهای سفارشی درخواست تعریف کنید. این هندلرها روی سرور اجرا می‌شوند و از تمام متدهای اصلی HTTP پشتیبانی می‌کنند.


2. متدهای پشتیبانی‌شده HTTP


  • GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
export async function GET(request: Request) {} export async function POST(request: Request) {} export async function OPTIONS(request: Request) {}

3. دسترسی به داده‌های درخواست


از NextRequest برای دسترسی به کوکی‌ها، هدرها و پارامترهای کوئری استفاده کنید:

import { type NextRequest } from 'next/server'

export async function GET(request: NextRequest) { const token = request.cookies.get('token') const referer = request.headers.get('referer') const query = request.nextUrl.searchParams.get('query') }

4. پارامترهای داینامیک مسیر


از params برای دسترسی به سگمنت‌های داینامیک استفاده کنید:

// app/items/[slug]/route.ts export async function GET(request, { params }) { const { slug } = await params }

5. استفاده از RouteContext


برای تایپ قوی‌تر از RouteContext استفاده کنید:

export async function GET(_req: NextRequest, ctx: RouteContext<'/users/[id]'>) { const { id } = await ctx.params return Response.json({ id }) }

6. کوکی‌ها


خواندن و تنظیم کوکی‌ها با cookies() از next/headers:

const cookieStore = await cookies() cookieStore.set('token', 'abc123')

7. هدرها


خواندن هدرها با headers() یا request.headers. برای تنظیم هدرها، یک Response جدید برگردانید:

return new Response('Hello', { headers: { 'X-Custom': 'value' }, })

8. خواندن بدنه درخواست


const json = await request.json() const formData = await request.formData()

9. پارامترهای کوئری


const query = request.nextUrl.searchParams.get('query')

10. بازاعتبارسنجی داده‌های کش‌شده


export const revalidate = 60

11. ریدایرکت‌ها


import { redirect } from 'next/navigation' redirect('https://nextjs.org/')

12. پاسخ‌های استریم‌شده


از ReadableStream یا AI SDK برای استریم محتوا استفاده کنید:

async function* makeIterator() { yield encoder.encode('<p>One</p>') await sleep(200) yield encoder.encode('<p>Two</p>') }

const stream = iteratorToStream(makeIterator()) return new Response(stream)

13. هدرهای CORS


return new Response('Hello', { headers: { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'GET, POST', 'Access-Control-Allow-Headers': 'Content-Type', }, })

14. وبهوک‌ها


export async function POST(request: Request) { const payload = await request.text() return new Response('Success!', { status: 200 }) }

15. پاسخ‌های غیر UI


ارائه مستقیم XML، آیکون‌ها یا متادیتا:

// app/rss.xml/route.ts return new Response(<rss>...</rss>, { headers: { 'Content-Type': 'text/xml' }, })

نتیجه‌گیری


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

مقالات مرتبط

مسیریابی پیشرفته و هوک‌های عملکرد در 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.

ادامه