以前構築した Docker + Nginx + Node.js環境でAPIを叩く時にプチハマりしたことを書きます。
環境は↓
やりたいこと
getServerSideProps
内とNextPage
内それぞれでAPIを叩きたい。
やったこと
NextPage内
エンドポイントがlocalhost:8080/api/get-hoge
であるとする。
const res = await fetch('http://localhost:8080/api/hoge',
{
method: 'GET',
// 略
});
こちらはうまくいきました。が、
getServerSideProps内
.ts
const res = await fetch('http://localhost:8080/api/hoge',
{
method: 'GET',
// 略
});
こっちは
Server Error / Error: connect ECONNREFFUSED
~~って出ちゃいました
調べていると、クライアントサイドとサーバーサイドで叩くドメインを変えないいけないようなので、
const res = await fetch('http://host.docker.internal:8080/api/hoge',
{
method: 'GET',
// 略
});
これでできました。
参考