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