الحل الوسيط الخفيف والحلول معالجة الطريق لـ NEXT.JS. مدعوم من قبل القرار؟
$ npm install connext-js
تهيئة مثيل جديد من connext.
const Connext = require ( 'connext-js' ) ;
const app = Connext ( ) ; Connext هو حل الوسيطة لـ Next.js مع بناء جملة على الطراز السريع الذي يدعم كل من الوسيطة العالمية والمرنة الخاصة بالمسار. بالنسبة للوسيط العالمي ، يجب عليك إنشاء مجلد controllers يجب أن يحتوي على ملف وحدة تحكم global.js . نوصي أيضًا بإنشاء ملفات وحدة تحكم لأدوات الوسيطة الأخرى كوسيلة لتعديل منطق API الخاص بك.
يشبه إعداد المسارات باستخدام connext خطوط تعيين طرق في Express.
جميع طرق طلب HTTP صالحة لها طرق مرتبطة على كائن Connext.
app . get ( ) ;
app . post ( ) ;
app . put ( ) ;
app . delete ( ) ;
app . head ( ) ;
app . trace ( ) ;
app . patch ( ) ;
app . options ( ) ;
app . connect ( ) ;Connext يدعم أي نقطة نهاية API ثابتة أو مستقلة. يأتي دعم التوجيه الديناميكي قريبًا. ⚡
في connext ، يمكنك الوصول إلى كائن الطلب المتاح في Next.js ويستمر الوصول من خلال سلسلة الوسيطة- تمامًا مثل Express! الخصائص المتاحة هي req.url و req.method و req.body .
على عكس Express ، إذا كنت بحاجة إلى تخزين البيانات ، فيمكنك إضافة أي مفتاح إلى كائن الاستجابة مع أي بيانات ترغب في تخزينها. سيؤدي هذا ببساطة إلى زيادة كائن الرد الخاص بك ويستمر في استمرار هذا الكائن طوال دورة حياة الطلب. السابق:
response . data = JSON . stringify ( data ) ;
response . match = true ;
response . array = [ 'I' m the data you need '];مثال بنية الملف:
├── ...
├── controllers
│ ├── global.js # required for global middleware
│ └── middleware.js # suggested for modularization of middleware functions
├── pages # required folder for routes in Next.js
│ └── api # required folder for API routes in Next.js
└── ...
لاستخدام وظائف Connext Global Middleware ، يجب عليك إنشاء ملف global.js في مجلد يسمى controllers . يجب أن يكون مجلد controllers في نفس مستوى مجلد pages الخاص بك ويجب أن يقوم ملف global.js بتصدير صفيف .
يحتوي connext على معالج خطأ عالمي بسيط في العمل كلما تم تمرير شيء ما في الاحتجاج بـ next() . إذا كنت ترغب في استخدام معالج الأخطاء الخاص بك ، فقم بتعريفه في global.js باعتباره العنصر الأخير من الصفيف المصدر.
مثال Global.JS
// a global middleware function
const globalOne = ( req , res , next ) => {
console . log ( 'this the first function that runs!' ) ;
return next ( ) ;
} ;
// another global middleware function
const globalTwo = ( req , res , next ) => {
console . log ( 'another one!' ) ;
return next ( ) ;
} ;
// global error handler
const errorHandler = ( err , req , res , next ) => {
return res . status ( 500 ) . send ( 'an error occurred' ) ;
} ;
// export your array of global middleware
module . exports = [ globalOne , globalTwo , errorHandler ] ; نوصيك بتعديل البرامج الوسيطة الأخرى في ملف واحد أو أكثر في ملف controllers الخاصة بك للحفاظ على الرمز القابل للقراءة وسهلة التصحيح؟
Middleware.js مثال
const middlewareController = { } ;
middlewareController . functionOne = ( req , res , next ) => {
// middleware functionality here
return next ( ) ;
}
middlewareController . functionTwo = ( req , res , next ) => {
// middleware functionality here
return next ( ) ;
}
module . exports = middlewareController ;كما هو الحال في Express ، كل طريقة في Connext لها سلسلة مرتبطة بها والتي تتوافق مع طريقة HTTP صالحة.
على سبيل المثال: GET, DELETE, POST ، إلخ.
لتحديد مسار باستخدام Connext ، أضف ملف JavaScript داخل مجلد api المطلوب من Next.js.
├── pages # required folder for routes in Next.js
│ └── api # required folder for API routes in Next.js
│ └── exampleRoute.js # created route file inside of API folder
داخل ملف الطريق
const Connext = require ( 'Connext-js' ) ;
const middleware = require ( '../../controllers/middleware' ) ;
const app = Connext ( ) ;
app . get ( '/api/exampleRoute' , middleware . one , middleware . two , ( req , res ) => {
res . status ( 200 ) . json ( res . example ) ;
} ) ;
app . post ( '/api/exampleRoute' , middleware . three , ( req , res ) => {
res . status ( 200 ) . json ( res . example ) ;
} ) ;
app . delete ( '/api/exampleRoute' , middleware . four , ( req , res ) => {
res . status ( 200 ) . json ( res . example ) ;
} ) ;
export default app ;سارة باورز
ايلي جاليبولي
إيزومي ساتو
أليكس كانغ