Una solución liviana de manejo de middleware y ruta para Next.js. ¿Impulsado por Dirext?
$ npm install connext-js
Inicializar una nueva instancia de Connext.
const Connext = require ( 'connext-js' ) ;
const app = Connext ( ) ; Connext es una solución de middleware para Next.js con sintaxis de estilo expreso que admite el middleware global y flexible específico de ruta. Para el middleware global, debe crear una carpeta controllers que debe contener un archivo controlador global.js . Recomendamos también crear archivos de controlador para su otro middleware como una forma de modularizar su lógica de API.
Configuración de rutas utilizando connext se asemeja mucho a las rutas de configuración en express.
Todos los métodos de solicitud HTTP válidos tienen métodos asociados en el objeto Connext.
app . get ( ) ;
app . post ( ) ;
app . put ( ) ;
app . delete ( ) ;
app . head ( ) ;
app . trace ( ) ;
app . patch ( ) ;
app . options ( ) ;
app . connect ( ) ;Connext admite cualquier punto final API estático o consultado. El apoyo para el enrutamiento dinámico llegará pronto. ⚡️
En connext , tiene acceso al objeto de solicitud disponible en Next.js y ese acceso persiste a través de la cadena de middleware, ¡al igual que Express! Las propiedades disponibles son req.url , req.method y req.body .
A diferencia de Express, si necesita almacenar datos, puede agregar cualquier clave al objeto de respuesta con los datos que desee almacenar. Esto simplemente aumentará su objeto de respuesta y continuará persistiendo este objeto a lo largo del ciclo de vida de la solicitud. EX:
response . data = JSON . stringify ( data ) ;
response . match = true ;
response . array = [ 'I' m the data you need '];Estructura de archivo de ejemplo:
├── ...
├── 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
└── ...
Para utilizar la funcionalidad de middleware global de Connext, debe crear un archivo global.js en una carpeta llamada controllers . La carpeta controllers debe estar al mismo nivel que su carpeta pages y su archivo global.js deben exportar una matriz .
connext tiene un controlador de error integrado global simple que se ejecutará cada vez que se pasa algo en la invocación de next() . Si desea usar su propio controlador de errores, defina en global.js como el último elemento de la matriz exportada.
Ejemplo 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 ] ; Recomendamos que modularice su otro middleware en uno o más archivos en su archivo de controllers para mantener su código legible y fácil de depurar.
Ejemplo de 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 ;Como en Express, cada método en Connext tiene una cadena vinculada a ella que corresponde con un método HTTP válido.
Por ejemplo: GET, DELETE, POST , etc.
Para definir una ruta usando Connext, agregue un archivo JavaScript dentro de la carpeta api requerida de 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
Dentro del archivo de ruta
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 ;Poderes de Sara
Eli Gallipoli
Izumi Sato
Alex Kang