Um middleware leve e uma solução de manuseio de rota para Next.JS. Alimentado por Dirext?
$ npm install connext-js
Inicialize uma nova instância do Connext.
const Connext = require ( 'connext-js' ) ;
const app = Connext ( ) ; O Connext é uma solução de middleware para o Next.js com sintaxe de estilo expresso que suporta middleware global e flexível específico. Para o middleware global, você deve criar uma pasta controllers que deve conter um arquivo do controlador global.js . Recomendamos também a criação de arquivos do controlador para o outro middleware como uma maneira de modularizar sua lógica da API.
A configuração de rotas usando connext se assemelha a definir rotas no Express.
Todos os métodos de solicitação HTTP válidos têm métodos associados ao objeto Connext.
app . get ( ) ;
app . post ( ) ;
app . put ( ) ;
app . delete ( ) ;
app . head ( ) ;
app . trace ( ) ;
app . patch ( ) ;
app . options ( ) ;
app . connect ( ) ;O Connext suporta qualquer endpoint estático ou consultado da API. O suporte ao roteamento dinâmico está chegando em breve. ⚡️
No connext , você tem acesso ao objeto de solicitação disponível no Next.js e esse acesso persiste através da cadeia de middleware- assim como o Express! As propriedades disponíveis são req.url , req.method e req.body .
Ao contrário do Express, se você precisar armazenar dados, poderá adicionar qualquer chave ao objeto de resposta com os dados que desejar armazenar. Isso simplesmente aumentará seu objeto de resposta e continuará a persistir esse objeto durante todo o ciclo de vida da solicitação. EX:
response . data = JSON . stringify ( data ) ;
response . match = true ;
response . array = [ 'I' m the data you need '];Exemplo de estrutura de arquivo:
├── ...
├── 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 a funcionalidade global de middleware da Connext, você deve criar um arquivo global.js em uma pasta chamada controllers . A pasta controllers deve estar no mesmo nível da pasta pages e seu arquivo global.js deve exportar uma matriz .
connext possui um manipulador de erros interno global simples que será executado sempre que algo for passado para a invocação de next() . Se você quiser usar seu próprio manipulador de erros, defina -o no global.js como o último elemento da matriz exportada.
Exemplo 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 você modulare seu outro middleware em um ou mais arquivos no arquivo dos controllers para manter seu código legível e fácil de depurar?
Exemplo 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 no Express, todo método no Connext possui uma string ligada a ele que corporta com um método HTTP válido.
Por exemplo: GET, DELETE, POST , etc.
Para definir uma rota usando o Connext, adicione um arquivo JavaScript dentro da pasta api necessária do 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 do arquivo de rota
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