getServerSideProps
getServerSideProps
は、リクエスト時にデータを取得しページのコンテンツをレンダリングするために使用できる Next.js の関数です。
使用例
getServerSideProps
はページコンポーネントからエクスポートすることで使用できます。以下の例では、getServerSideProps
でサードパーティ API からデータを取得し、そのデータを props としてページに渡す方法を示しています:
getServerSideProps
を使用すべきケース
ユーザーごとに異なるデータや、リクエスト時にしかわからない情報(authorization
ヘッダーや地理位置情報など)に依存するページをレンダリングする必要がある場合、getServerSideProps
を使用すべきです。
リクエスト時にデータを取得する必要がなかったり、データと事前レンダリングされた HTML をキャッシュしたい場合は、getStaticProps
の使用を検討してください。
動作仕様
getServerSideProps
はサーバー上で実行されますgetServerSideProps
は ページ からのみエクスポートできますgetServerSideProps
は JSON を返します- ユーザーがページにアクセスすると、
getServerSideProps
がリクエスト時にデータを取得し、そのデータを使用してページの初期 HTML がレンダリングされます - ページコンポーネントに渡される
props
は、初期 HTML の一部としてクライアント側で確認できます。これはページを正しくハイドレートするためです。クライアント側で利用可能にしてはいけない機密情報をprops
に含めないように注意してください - ユーザーが
next/link
やnext/router
経由でページにアクセスした場合、Next.js はサーバーに API リクエストを送信し、そこでgetServerSideProps
が実行されます getServerSideProps
を使用する場合、データ取得のために Next.js の API ルート を呼び出す必要はありません。この関数はサーバー上で実行されるため、CMS やデータベース、その他のサードパーティ API を直接呼び出すことができます
補足情報:
getServerSideProps
で使用可能なパラメータと props については、getServerSideProps
API リファレンス を参照してください- Next.js がクライアントサイドバンドルから何を削除しているか確認するには、next-code-elimination ツール を使用できます
エラー処理
getServerSideProps
内でエラーが発生した場合、pages/500.js
ファイルが表示されます。500 ページの作成方法については、500 ページ のドキュメントを参照してください。開発中はこのファイルは使用されず、代わりに開発用のエラーオーバーレイが表示されます。
特殊ケース
サーバーサイドレンダリング (SSR) でのキャッシュ
getServerSideProps
内でキャッシュヘッダー (Cache-Control
) を使用することで、動的なレスポンスをキャッシュできます。例えば stale-while-revalidate
を使用する方法があります。
ただし、cache-control
を使用する前に、getStaticProps
と ISR (増分的静的再生成) の組み合わせがユースケースに適しているかどうかを検討することをお勧めします。