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.

Vue/Reactでaxiosを使用したAPI通信時に500エラー

Last updated at Posted at 2021-05-30

はじめに

dockerにaxiosを使用しててAPIからデータを取得する際に、500 (Internal Server Error)が出た。
截屏2021-05-30 22.36.29.png

結論先に述べると、container内ではlocalhostのような外部リンクでの通信はできないから。

目次

  1. dockerなしの場合
  2. dockerの場合
  3. 参考文献

localでの場合

・proxyの設定はこんな感じ

frontend/vue.config.js
devServer: {
  proxy: {
   "/api": {
      target: "http://localhost:3000",
      changeOrigin: true,
      secure: false
    }
  }
}
frontend/views/Login.js
const handleSubmit = async () => {
  try {
    const res = await http.post('/api/users/login')
      console.log("res", res)
  } catch (error) {
     console.log("error", error)
  }
}
backend/routers/User.js
module.exports = router => {
  router.prefix("/api/users")
  router.post("/login", user.login)
}




・まずはpostmanを使って、apiはちゃんと動いているかをチェック。
・そもそもの話だが、バックエンドは実行されているかを確認する。
lsof -i -P | grep "LISTEN"を使って、portはあっているかを確認する。
・フロントはproxyで/apiを追加したのに、バックエンド側では/apiを足されていない
・windowsの場合は、 "target": "localhost:3000"
 macの場合は、 "target": "http://127.0.0.1:3000"

docker compose環境の場合

・dockerを使う場合は、"target": http://container-name:port
・以下のケースの場合、"target": http://backend:3000に設定する必要がある

docker-compse.yml
version: '3'
services:
 mysql:
  ..........
 backend:
   ........
 frontend:
   ..........

参考文献

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?