Updated at: Created at:
ビルド時に生成される Route Handler を使ってみた
カラーモード: システム
/static-route-handler は JSON を返すエンドポイントですが、その内容はRoute Handler で生成しています。
ソースコードは以下の通り、動的な機能を使っていないので、「リクエストが来た度に」ではなく「ビルド時」に生成されます。
// app/(home)/static-route-handler/route.ts
import { NextResponse } from "next/server";
export const GET = async () => {
return NextResponse.json({
data: {
thisJsonFile: "is genearted at build-time",
at: new Date(),
},
});
};
https://nextjs.org/docs/app/building-your-application/routing/route-handlers#caching
App Router の Route Handler の 「デフォルトの場合、結果はキャッシュされて、いっさい動的な挙動を示さない。動的に動いてほしければ特定の設定・機能を使う必要がある」 という仕様について「何かまた React 公式 / Next.js が too much で難解で誰得な仕様をこねくり回してるぞ~」みたいな雰囲気を感じますが、
「Server Component だからサーバーが必要とは限らない。ビルド時に色々できるようになるんだぞ」と Dan Abramov 先生が言っているように、App Router の Route Handler のこの仕様も、「動的よりも静的」の流れで、むしろビルド時に色々できるように配慮されてる気がします。