Une solution de middleware légère et de manutention des itinéraires pour next.js. Propulsé par Dirext?
$ npm install connext-js
Initialisez une nouvelle instance de Connext.
const Connext = require ( 'connext-js' ) ;
const app = Connext ( ) ; Connext est une solution middleware pour next.js avec syntaxe de style express qui prend en charge le middleware global et flexible spécifique à l'itinéraire. Pour le middleware global, vous devez créer un dossier controllers qui doit contenir un fichier de contrôleur global.js . Nous vous recommandons également de créer des fichiers de contrôleur pour votre autre middleware comme un moyen de modulariser votre logique API.
Les routes de définition à l'aide connext ressemblent étroitement aux routes de réglage dans Express.
Toutes les méthodes de demande HTTP valides ont des méthodes associées sur l'objet Connext.
app . get ( ) ;
app . post ( ) ;
app . put ( ) ;
app . delete ( ) ;
app . head ( ) ;
app . trace ( ) ;
app . patch ( ) ;
app . options ( ) ;
app . connect ( ) ;Connext prend en charge tout point de terminaison API statique ou interrogé. La prise en charge du routage dynamique arrive bientôt. ⚡️
À connext , vous avez accès à l' objet de demande disponible dans Next.js et cet accès persiste via la chaîne middleware - tout comme Express! Les propriétés disponibles sont req.url , req.method et req.body .
Contrairement à Express, si vous avez besoin de stocker des données, vous pouvez ajouter n'importe quelle clé à l' objet de réponse avec les données que vous souhaitez stocker. Cela augmentera simplement votre objet de réponse et continuera de persister cet objet tout au long du cycle de vie de la demande. EX:
response . data = JSON . stringify ( data ) ;
response . match = true ;
response . array = [ 'I' m the data you need '];Exemple de structure de fichiers:
├── ...
├── 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
└── ...
Pour utiliser la fonctionnalité globale du middleware de Connext, vous devez créer un fichier global.js dans un dossier appelé controllers . Le dossier controllers doit être au même niveau que votre dossier pages et votre fichier global.js doit exporter un tableau .
connext a un gestionnaire d'erreurs intégré global simple qui s'exécutera chaque fois que quelque chose est transmis dans l'invocation de next() . Si vous souhaitez utiliser votre propre gestionnaire d'erreurs, définissez-le dans global.js comme le dernier élément du tableau exporté.
Exemple 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 ] ; Nous vous recommandons de modulariser votre autre middleware dans un ou plusieurs fichiers dans votre fichier controllers pour garder votre code lisible et facile à déboguer?
Exemple 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 ;Comme dans Express, chaque méthode de Connext a une chaîne liée à ce que les coresponds avec une méthode HTTP valide.
Par exemple: GET, DELETE, POST , etc.
Pour définir un itinéraire à l'aide du connexion, ajoutez un fichier JavaScript à l'intérieur du dossier api requis 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
À l'intérieur du fichier d'itinéraire
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