ルーターこのページを編集.md

ミドルウェア

ファイルシステムベースルーターで、サーバミドルウェアとAPIルートも作成できます。 ページの基本ルーティングと同じように、ルーティングストラクチャーを使えます。

ミドルウェアとAPIルーティングで、@lazarv/react-serverから、全ての関数が利用可能です。 リクエストのリダイレクト、書き換え、クッキーの管理、レスポンスヘッダーの追加ができます。 React Server Component と同等の機能がそのまま利用できます。

ミドルウェアは、すべてのルートハンドラーの前に実行される関数です。それらは認証やログ記録、解析のような多くのことのために使われます。 ミドルウェアのルートを作成するには、.middleware.{js,mjs,ts,mts} 拡張子のミドルウェア用ファイルを作成し、モジュールからデフォルトで非同期関数をエクスポートします。
この関数がミドルウェアハンドラになります。 さらなるミドルウェアやルートハンドラの実行を止めるために、ミドルウェアからレスポンスを返すことができます。あるいは次のミドルウェアやルートハンドラの実行を続けるために、レスポンス値を排除することができます。

パスネームを取得するためにusePathname関数が使え、適合するルートを取得するためにuseMatch関数も使えます。 また、リクエストをリダイレクトまたは書き換えるために、リダイレクト関数、リライト関数も使えます。 また、ミドルウェアで、 @lazarv/react-serverモジュールから、他のヘルパーまたはフック関数を使うことができます。

// index.middleware.mjs import { redirect, rewrite, usePathname } from "@lazarv/react-server"; import { useMatch } from "@lazarv/react-server/router"; export default async function MyMiddleware() { const pathname = usePathname(); const isRedirect = useMatch("/redirect"); if (isRedirect) { redirect("/"); } const isRewrite = useMatch("/rewrite"); if (isRewrite) { rewrite("/"); } const isJson = useMatch("/json"); if (isJson) { return new Response(JSON.stringify({ message: "Hello World" }), { headers: { "Content-Type": "application/json", }, }); } }