NextResponse

تمتد NextResponse من واجهة برمجة تطبيقات الرد على الويب (Web Response API) مع إضافة طرق إضافية لسهولة الاستخدام.

cookies

قراءة أو تعديل رأس Set-Cookie في الرد.

set(name, value)

تعيين كوكي بقيمة معينة في الرد باستخدام الاسم المحدد.

// مع طلب وارد إلى /home
let response = NextResponse.next()
// تعيين كوكي لإخفاء اللافتة
response.cookies.set('show-banner', 'false')
// سيكون للرد رأس `Set-Cookie:show-banner=false;path=/home`
return response

get(name)

الحصول على قيمة الكوكي باستخدام اسمه. إذا لم يتم العثور على الكوكي، يتم إرجاع undefined. إذا تم العثور على أكثر من كوكي، يتم إرجاع الأول.

// مع طلب وارد إلى /home
let response = NextResponse.next()
// { name: 'show-banner', value: 'false', Path: '/home' }
response.cookies.get('show-banner')

getAll()

الحصول على قيم الكوكي باستخدام اسمه. إذا لم يتم تحديد اسم، يتم إرجاع جميع الكوكيز في الرد.

// مع طلب وارد إلى /home
let response = NextResponse.next()
// [
//   { name: 'experiments', value: 'new-pricing-page', Path: '/home' },
//   { name: 'experiments', value: 'winter-launch', Path: '/home' },
// ]
response.cookies.getAll('experiments')
// أو الحصول على جميع الكوكيز للرد
response.cookies.getAll()

delete(name)

حذف الكوكي من الرد باستخدام اسمه.

// مع طلب وارد إلى /home
let response = NextResponse.next()
// إرجاع true إذا تم الحذف، false إذا لم يتم حذف أي شيء
response.cookies.delete('experiments')

json()

إنشاء رد يحتوي على جسم JSON معين.

import { NextResponse } from 'next/server'

export async function GET(request: Request) {
  return NextResponse.json({ error: 'Internal Server Error' }, { status: 500 })
}
import { NextResponse } from 'next/server'

export async function GET(request) {
  return NextResponse.json({ error: 'Internal Server Error' }, { status: 500 })
}

redirect()

إنشاء رد يقوم بإعادة التوجيه إلى عنوان URL.

import { NextResponse } from 'next/server'

return NextResponse.redirect(new URL('/new', request.url))

يمكن إنشاء عنوان URL وتعديله قبل استخدامه في طريقة NextResponse.redirect(). على سبيل المثال، يمكنك استخدام خاصية request.nextUrl للحصول على عنوان URL الحالي، ثم تعديله لإعادة التوجيه إلى عنوان URL مختلف.

import { NextResponse } from 'next/server'

// مع طلب وارد...
const loginUrl = new URL('/login', request.url)
// إضافة ?from=/incoming-url إلى عنوان URL /login
loginUrl.searchParams.set('from', request.nextUrl.pathname)
// ثم إعادة التوجيه إلى عنوان URL الجديد
return NextResponse.redirect(loginUrl)

rewrite()

إنشاء رد يقوم بإعادة الكتابة (الوكالة) لعنوان URL معين مع الحفاظ على عنوان URL الأصلي.

import { NextResponse } from 'next/server'

// الطلب الوارد: /about، المتصفح يعرض /about
// الطلب المعاد كتابته: /proxy، المتصفح يعرض /about
return NextResponse.rewrite(new URL('/proxy', request.url))

next()

طريقة next() مفيدة في البرمجيات الوسيطة (Middleware)، حيث تسمح لك بالعودة مبكرًا ومتابعة التوجيه.

import { NextResponse } from 'next/server'

return NextResponse.next()

يمكنك أيضًا تمرير headers عند إنشاء الرد:

import { NextResponse } from 'next/server'

// مع طلب وارد...
const newHeaders = new Headers(request.headers)
// إضافة رأس جديد
newHeaders.set('x-version', '123')
// وإنشاء رد مع الرؤوس الجديدة
return NextResponse.next({
  request: {
    // رؤوس الطلب الجديدة
    headers: newHeaders,
  },
})