NextResponse

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

cookies

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

set(name, value)

بالنظر إلى اسم، يتم تعيين ملف تعريف الارتباط (cookie) بالقيمة المحددة في الاستجابة.

// مع طلب وارد إلى /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 للحصول على الرابط الحالي، ثم تعديله لإعادة التوجيه إلى رابط مختلف.

import { NextResponse } from 'next/server'

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

rewrite()

إنشاء استجابة تعيد كتابة (توكيل) رابط 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,
  },
})