APIルートについて知っておくべき重要な情報がいくつかあります。
getStaticProps
またはgetStaticPaths
からAPIルートをフェッチしないgetStaticProps
またはgetStaticPaths
からAPIルートをフェッチするべきではありません。代わりに、getStaticProps
またはgetStaticPaths
で直接サーバーサイドコードを書く(またはヘルパー関数を呼び出す)必要があります。
理由は次のとおりです。getStaticProps
とgetStaticPaths
はサーバーサイドでのみ実行され、クライアントサイドでは決して実行されません。さらに、これらの関数はブラウザ用のJSバンドルには含まれません。つまり、ブラウザに送信することなく、データベースクエリなどのコードを直接記述できます。詳細については、サーバーサイドコードの記述ドキュメントをお読みください。
APIルートの適切なユースケースは、フォーム入力の処理です。たとえば、ページにフォームを作成し、APIルートにPOST
リクエストを送信するように設定できます。その後、コードを記述してデータベースに直接保存できます。APIルートコードはクライアントバンドルの一部ではないため、安全にサーバーサイドコードを記述できます。
export default function handler(req, res) {
const email = req.body.email;
// Then save email to your database, etc...
}
静的生成は、ページがヘッドレスCMSからデータをフェッチする場合に便利です。ただし、ヘッドレスCMSでドラフトを作成し、ページでドラフトをすぐにプレビューしたい場合には理想的ではありません。Next.jsには、ビルド時ではなくリクエスト時にこれらのページをレンダリングし、公開されたコンテンツではなくドラフトコンテンツをフェッチさせる必要があります。この特定のケースでのみ、Next.jsに静的生成をバイパスさせる必要があります。
Next.jsには、上記の問題を解決するためのプレビューモードという機能があり、APIルートを利用しています。詳細については、プレビューモードドキュメントをご覧ください。
APIルートは、通常のページと同様に動的にできます。詳細については、動的APIルートドキュメントをご覧ください。
次の最後の基本レッスンでは、Next.jsアプリを本番環境にデプロイする方法について説明します。
簡単な復習:次のうち、APIルートの適切なユースケースはどれですか?