next.jsの軽量ミドルウェアとルート処理ソリューションDirextを搭載していますか?
$ npm install connext-js
Connextの新しいインスタンスを初期化します。
const Connext = require ( 'connext-js' ) ;
const app = Connext ( ) ;Connextは、グローバルおよび柔軟なルート固有のミドルウェアの両方をサポートするExpressスタイルの構文を備えたNext.JSのミドルウェアソリューションです。グローバルミドルウェアの場合、 global.jsコントローラーファイルを含める必要があるcontrollersフォルダーを作成する必要があります。また、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で利用可能なリクエストオブジェクトにアクセスでき、そのアクセスはミドルウェアチェーンを介して持続します。使用可能なプロパティは、 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のグローバルミドルウェア機能を利用するには、 controllersと呼ばれるフォルダーにglobal.jsファイルを作成する必要があります。 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ファイルの1つ以上のファイルで他のミドルウェアをモジュール化して、コードを読みやすくデバッグしやすくすることをお勧めします。
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を使用してルートを定義するには、next.jsの必要なapiフォルダー内にJavaScriptファイルを追加します。
├── 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 ;サラパワーズ
エリ・ガリポリ
佐藤村
アレックス・カン