🐺
Next.jsのrewritesでリクエストをmockに向ける
はじめに
Next.js
で作成されたアプリケーションとは別で管理しているmock server
に対して
ブラウザからのリクエストを送信させるようにしてみた。
結論
next.config.js Option
に用意されているrewrites
を利用して
URLプロキシにより開発時はmock server
に送信させます。
実装
module.exports = {
async rewrites() {
return [
{
source: '/:path*',
destination: 'http://localhost:3100/:path*',
},
]
},
}
本記事ではすべてのNext.js
ルートをチェックした後
Next.js
を既存のmock server
へのプロキシにフォールバックさせています。
source
の/:path*
はワイルドカードを駆使して全てのリクエストにマッチさせるように宣言しています。
destination
にはmock server
のpath
を指定しています。
外部APIへのMock
外部APIのmock
は、REST APIを採用している場合であれば
rewrites
を使用してmock server
にリクエストするように設定しています。
本プロジェクトでは、host
を環境変数で設定するように実装をしているため
開発時はNext.js
のbaseUrl
と同様にすることでプロキシ対象になるようにしています。
※ライブラリのMock
に関してはライブラリ毎に用意されていることもあるためここでは割愛します。
const baseUrl = process.env.NEXT_PUBLIC_BASE_URL // http://localhost:3000
function fetch(`${baseUrl}/hoge/`, 'GET').then(...) // localhost:3100に対して送信される
その他機能
今回は使用しませんでしたがnext.config
のOption
には
正規表現を駆使したPath Matching
やQuery
のMatching
も用意されています。
Discussion