Honey32 Bear Web Apps

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 のこの仕様も、「動的よりも静的」の流れで、むしろビルド時に色々できるように配慮されてる気がします。