Next.jsとASP.NET Coreを組み合わせてプロジェクトを作成し、YARP (Yet Another Reverse Proxy) を利用してフロントエンドとバックエンドを連携させる手順を説明します。主な流れは下記となります。
- ASP.NET Coreを使用してWebAPIを構築する。
- Next.jsを使用してフロントエンドを構築する。
- .NET Aspireを使用してプロジェクトを管理し、YARPを使用してReverse Proxyを実装する。
- Next.jsからASP.NET Core WebAPIを呼び出す方法を説明する。
記事のソースコードはこちら (https://github.com/atman-33/nextjs-aspire)
参考URL
詳細な手順は以下の記事を参考にしています: Next.js + ASP.NET Core を .NET Aspire で構成する(with YARP)
上記サイトの構築手順では、Next.jsのCSRページからWebApiを叩いた後のCORSエラーが解消されなかったため、そのエラー対応として本記事を参考にして頂けると幸いです。
1. WebAPIをASP.NET Coreで作成
空のソリューションを作成
まず、空のソリューションを作成します。ソリューション名はNextJSAspire
とします。
ASP.NET COREを作成
次に、ASP.NET Core Web APIプロジェクトを作成します。プロジェクト名はWebApi
とします。
2. フロントエンドをNext.jsで作成
ソリューションファイルを作成したディレクトリをPowerShellで開き、以下のコマンドを実行してNext.jsアプリケーションを作成します。
3. Next.jsアプリケーションを.NET Aspire管理にする
Node.jsプロジェクトを.NET Aspireで管理するためには、ライブラリ参照が必要です。AppHostプロジェクトを右クリックし、「追加」→「.NET Aspire パッケージ」を選択します。
表示されたNuGetパッケージマネージャー画面で検索文字列に「Node」を追加し、Node.jsをホストするためのパッケージをインストールします。
AppHostプロジェクトのProgram.csを次のように実装します。
4. Next.jsからWebAPIを呼び出す
WebAPIのエンドポイントを変更
Next.jsの実装前に、WebAPIのエンドポイントを変更します。WebAPIプロジェクトのProgram.csを以下のように修正します。
Server ComponentsからWebAPIを呼び出す
frontend\src\app\server\page.tsx
を以下のように修正します。
Client ComponentsからWebAPIを呼び出す
frontend\src\app\client\page.tsx
を以下のように修正します。
この時点では、CORSエラーが発生するため、次のステップでReverse Proxyを実装します。
5. YARPでReverse Proxyを実装する
空のASP.NET Coreアプリケーションを追加する
ASP.NET Core(空)のプロジェクトを追加します。プロジェクト名はReverseProxy
とします。
AppHostプロジェクトで参照先を実装する
NextJSAspire.AppHost\Program.cs
を以下のように修正します。
Microsoft.Extensions.ServiceDiscovery.Yarpをインストールする
- Reverse ProxyプロジェクトのNuGetパッケージ管理画面を開きます。
- Microsoft.Extensions.ServiceDiscovery.Yarpをインストールします。
Reverse Proxyを実装する
ReverseProxy\Program.cs
を以下のように実装します。
WebApiに、Reverse Proxyからのアクセスを許可する
WebApi\Program.cs
を以下のように修正します。
Next.jsのCSRからWebAPIの呼び出しを修正
frontend\src\app\client\page.tsx
を以下のように修正します。
これで、Reverse Proxyを通じてWebAPIからデータを取得できるようになります。ダッシュボードにReverseProxyのリソースが増えているので、ReverseProxyのエンドポイントのリンクをクリックして初期画面を表示後、/client
にアクセスしてWebAPIからデータを取得可能か確認します。