ملف route.js

تسمح لك Route Handlers بإنشاء معالجات طلبات مخصصة لمسار معين باستخدام واجهات برمجة التطبيقات Request و Response من الويب.

export async function GET() {
  return Response.json({ message: 'Hello World' })
}
export async function GET() {
  return Response.json({ message: 'Hello World' })
}

المرجع

طرق HTTP

يسمح لك ملف route بإنشاء معالجات طلبات مخصصة لمسار معين. يتم دعم طرق HTTP التالية: GET، POST، PUT، PATCH، DELETE، HEAD، و OPTIONS.

export async function GET(request: Request) {}

export async function HEAD(request: Request) {}

export async function POST(request: Request) {}

export async function PUT(request: Request) {}

export async function DELETE(request: Request) {}

export async function PATCH(request: Request) {}

// إذا لم يتم تعريف `OPTIONS`، سيقوم Next.js تلقائيًا بتنفيذ `OPTIONS` وتعيين رأس Response `Allow` المناسب بناءً على الطرق الأخرى المعرفة في Route Handler.
export async function OPTIONS(request: Request) {}
export async function GET(request) {}

export async function HEAD(request) {}

export async function POST(request) {}

export async function PUT(request) {}

export async function DELETE(request) {}

export async function PATCH(request) {}

// إذا لم يتم تعريف `OPTIONS`، سيقوم Next.js تلقائيًا بتنفيذ `OPTIONS` وتعيين رأس Response `Allow` المناسب بناءً على الطرق الأخرى المعرفة في Route Handler.
export async function OPTIONS(request) {}

المعاملات

request (اختياري)

كائن request هو كائن NextRequest، وهو امتداد لواجهة برمجة التطبيقات Request من الويب. يعطيك NextRequest تحكمًا أكبر في الطلب الوارد، بما في ذلك الوصول بسهولة إلى cookies وكائن URL ممتد ومحلل nextUrl.

import type { NextRequest } from 'next/server'

export async function GET(request: NextRequest) {
  const url = request.nextUrl
}
export async function GET(request) {
  const url = request.nextUrl
}

context (اختياري)

export async function GET(
  request: Request,
  { params }: { params: Promise<{ team: string }> }
) {
  const { team } = await params
}
export async function GET(request, { params }) {
  const { team } = await params
}
مثالURLparams
app/dashboard/[team]/route.js/dashboard/1Promise<{ team: '1' }>
app/shop/[tag]/[item]/route.js/shop/1/2Promise<{ tag: '1', item: '2' }>
app/blog/[...slug]/route.js/blog/1/2Promise<{ slug: ['1', '2'] }>

أمثلة

التعامل مع ملفات تعريف الارتباط (cookies)

import { cookies } from 'next/headers'

export async function GET(request: NextRequest) {
  const cookieStore = await cookies()

  const a = cookieStore.get('a')
  const b = cookieStore.set('b', '1')
  const c = cookieStore.delete('c')
}
import { cookies } from 'next/headers'

export async function GET(request) {
  const cookieStore = await cookies()

  const a = cookieStore.get('a')
  const b = cookieStore.set('b', '1')
  const c = cookieStore.delete('c')
}

سجل الإصدارات

الإصدارالتغييرات
v15.0.0-RCأصبح context.params وعدًا. يتوفر أداة تحويل تلقائي
v15.0.0-RCتم تغيير التخزين المؤقت الافتراضي لمعالجات GET من ثابت إلى ديناميكي
v13.2.0تم تقديم Route Handlers.