NextRequest

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

cookies

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

set(name, value)

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

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

get(name)

بالنظر إلى اسم ملف تعريف الارتباط، يقوم بإرجاع قيمته. إذا لم يتم العثور على ملف تعريف الارتباط، يتم إرجاع undefined. إذا تم العثور على أكثر من ملف تعريف ارتباط، يتم إرجاع الأول.

// بالنظر إلى الطلب الوارد /home
// { name: 'show-banner', value: 'false', Path: '/home' }
request.cookies.get('show-banner')

getAll()

بالنظر إلى اسم ملف تعريف الارتباط، يقوم بإرجاع قيم ملفات تعريف الارتباط. إذا لم يتم تحديد اسم، يتم إرجاع جميع ملفات تعريف الارتباط في الطلب.

// بالنظر إلى الطلب الوارد /home
// [
//   { name: 'experiments', value: 'new-pricing-page', Path: '/home' },
//   { name: 'experiments', value: 'winter-launch', Path: '/home' },
// ]
request.cookies.getAll('experiments')
// بدلاً من ذلك، الحصول على جميع ملفات تعريف الارتباط للطلب
request.cookies.getAll()

delete(name)

بالنظر إلى اسم ملف تعريف الارتباط، يقوم بحذفه من الطلب.

// إرجاع true إذا تم الحذف، false إذا لم يتم حذف أي شيء
request.cookies.delete('experiments')

has(name)

بالنظر إلى اسم ملف تعريف الارتباط، يقوم بإرجاع true إذا كان ملف تعريف الارتباط موجودًا في الطلب.

// إرجاع true إذا كان ملف تعريف الارتباط موجودًا، false إذا لم يكن موجودًا
request.cookies.has('experiments')

clear()

إزالة رأس Set-Cookie من الطلب.

request.cookies.clear()

nextUrl

يمتد واجهة URL الأصلية مع إضافة طرق إضافية لسهولة الاستخدام، بما في ذلك خصائص خاصة بـ Next.js.

// بالنظر إلى طلب إلى /home، pathname هو /home
request.nextUrl.pathname
// بالنظر إلى طلب إلى /home?name=lee، searchParams هو { 'name': 'lee' }
request.nextUrl.searchParams

الخيارات التالية متاحة:

الخاصيةالنوعالوصف
basePathstringالمسار الأساسي لـ URL.
buildIdstring | undefinedمعرف بناء تطبيق Next.js. يمكن تخصيصه.
pathnamestringمسار URL.
searchParamsObjectمعلمات البحث لـ URL.

ملاحظة: خصائص التدويل من موجه الصفحات غير متاحة للاستخدام في موجه التطبيق. تعلم المزيد عن التدويل مع موجه التطبيق.

ip

خاصية ip هي سلسلة تحتوي على عنوان IP للطلب. يمكن توفير هذه القيمة اختياريًا من خلال منصة الاستضافة الخاصة بك.

جيد للمعرفة: في Vercel، يتم توفير هذه القيمة افتراضيًا. في المنصات الأخرى، يمكنك استخدام رأس X-Forwarded-For لتوفير عنوان IP.

// يتم توفيره بواسطة Vercel
request.ip
// الاستضافة الذاتية
request.headers.get('X-Forwarded-For')

geo

خاصية geo هي كائن يحتوي على المعلومات الجغرافية للطلب. يمكن توفير هذه القيمة اختياريًا من خلال منصة الاستضافة الخاصة بك.

جيد للمعرفة: في Vercel، يتم توفير هذه القيمة افتراضيًا. في المنصات الأخرى، يمكنك استخدام رأس X-Forwarded-For لتوفير عنوان IP، ثم استخدام خدمة طرف ثالث للبحث عن المعلومات الجغرافية.

// يتم توفيره بواسطة Vercel
request.geo.city
request.geo.country
request.geo.region
request.geo.latitude
request.geo.longitude

// الاستضافة الذاتية
function getGeo(request) {
  let ip = request.headers.get('X-Forwarded-For')
  // استخدام خدمة طرف ثالث للبحث عن المعلومات الجغرافية
}