Solusi penanganan middleware dan rute yang ringan untuk Next.js. Didukung oleh Dirext?
$ npm install connext-js
Inisialisasi instance Connext baru.
const Connext = require ( 'connext-js' ) ;
const app = Connext ( ) ; Connext adalah solusi middleware untuk Next.js dengan sintaks bergaya ekspres yang mendukung middleware spesifik rute global dan fleksibel. Untuk middleware global, Anda harus membuat folder controllers yang harus berisi file pengontrol global.js . Kami sarankan juga membuat file pengontrol untuk middleware Anda yang lain sebagai cara untuk memodulasi logika API Anda.
Pengaturan rute menggunakan connext sangat mirip dengan pengaturan rute di Express.
Semua metode permintaan HTTP yang valid memiliki metode terkait pada objek Connext.
app . get ( ) ;
app . post ( ) ;
app . put ( ) ;
app . delete ( ) ;
app . head ( ) ;
app . trace ( ) ;
app . patch ( ) ;
app . options ( ) ;
app . connect ( ) ;Connext mendukung titik akhir API statis atau pertanyaan. Dukungan untuk routing dinamis akan segera hadir. ⚡️
Di connext , Anda memiliki akses ke objek permintaan yang tersedia di Next.js dan bahwa akses tetap ada melalui rantai middleware- seperti Express! Properti yang tersedia adalah req.url , req.method , dan req.body .
Tidak seperti Express, jika Anda perlu menyimpan data, Anda dapat menambahkan kunci apa pun ke objek respons dengan data apa pun yang ingin Anda simpan. Ini hanya akan menambah objek respons Anda dan terus mempertahankan objek ini di seluruh siklus hidup permintaan. MANTAN:
response . data = JSON . stringify ( data ) ;
response . match = true ;
response . array = [ 'I' m the data you need '];Contoh struktur file:
├── ...
├── 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
└── ...
Untuk memanfaatkan fungsionalitas middleware global Connext, Anda harus membuat file global.js di folder yang disebut controllers . Folder controllers harus pada level yang sama dengan folder pages Anda dan file global.js Anda harus mengekspor array .
connext memiliki penangan kesalahan bawaan global sederhana yang akan berjalan setiap kali ada sesuatu yang diteruskan ke dalam doa next() . Jika Anda ingin menggunakan penangan kesalahan Anda sendiri, tentukan di global.js sebagai elemen terakhir dari array yang diekspor.
Global.js Contoh
// 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 ] ; Kami menyarankan Anda memodulasi middleware Anda yang lain di satu atau lebih file dalam file controllers Anda agar kode Anda dapat dibaca dan mudah didebug?
Contoh 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 ;Seperti di Express, setiap metode di Connext memiliki string yang terikat pada itu yang sesuai dengan metode HTTP yang valid.
Misalnya: GET, DELETE, POST , dll.
Untuk mendefinisikan rute menggunakan Connext, tambahkan file JavaScript di dalam folder api yang diperlukan 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
Di dalam file rute
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 ;Sara Powers
Eli Gallipoli
Izumi Sato
Alex Kang