1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Nuxtでブラウザから直接APIを叩くのはやめましょう

Last updated at Posted at 2022-05-26

はじめに

Nuxt案件でAWS構築を任される際、いつも下記エラーが話題になるので、説明資料としてあらかじめQiitaにまとめておきます。

  • バックエンドAPIに繋がらない
  • 環境変数を取得できない

前提

ECSでフロントエンドとバックエンドのそれぞれのサービスをデプロイします。
両方のサービスはプライベートサブネットに配置してあります。
スクリーンショット 2022-05-26 17.09.21.png

NuxtからバックエンドAPIに繋がらない

Nuxtからaxiosを使ってAPIを呼ぶときは、ブラウザから直接APIを叩くことはできません。
Nuxtサーバーを経由してバックエンドのAPIを呼ぶ必要があります。
そのため、proxyの設定をしましょう。
下記process.env.BASE_URLがバックエンドAPIのエンドポイントです。

nuxt.config.js
export default {
    ...
    // Axios module configuration: https://go.nuxtjs.dev/config-axios
    axios: {
        proxy: true,
    },

    proxy: {
        '/api/': {
            target: process.env.BASE_URL,
        },
    },
    ... 
}

環境変数が取得できない

ECSで設定できる環境変数は、Nuxtサーバーが動いている環境(例えばEC2やFargate)における環境変数です。
つまり、クライアント(ブラウザ)における環境変数ではありません。
そのため、上記proxy設定がされていないと、ECS設定した環境変数をNuxtが読み込むことはできません。

最後に

クライアントから直接APIを叩くのはやめましょうと言いましたが、API経由で画像などダウンロードするとNATの通信料がかかってしまうので、S3などはクライアントから直接アクセスしてもらった方がいいです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?