LoginSignup
Mymt658
@Mymt658

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

herokuデプロイ後のバックエンドの呼び出し

実現したいこと
現在、バックエンドをrails(docker環境),フロントエンドをReactにてアプリの開発を行なっています。

フロント、バックエンド共に、herokuへのデプロイは完了したのですが、
フロント側から、バックエンドへの通信がうまくいきません。

Rails、Reactは別フォルダーで作成しています。
├── バックエンド
├── フロントエンド

発生している問題・エラーメッセージ
イメージ説明
スクリーンショット 2022-07-03 14.38.26.png

上記画像のようなエラーが出てしまい、バックエンド側とうまく接続できていないようです。

バックエンドで呼び出す際のURLをherokuのURLにしてみましたがレスポンス404と出てきてしまい、うまくいきませんでした。

どなたか力添えお願いします。

app/controllers
├── api
│ └── v1
│ ├── auth
│ │ ├── registrations_controller.rb
│ │ └── sessions_controller.rb
│ ├── englishlists_controller.rb
│ ├── lists_controller.rb
│ ├── test_controller.rb
│ └── users_controller.rb
├── application_controller.rb

cors.rb
Rails.application.config.middleware.insert_before 0, Rack::Cors do
  allow do
    origins 'localhost:3000','https://englist-f.herokuapp.com'
    resource '*',
      headers: :any,
      expose: ["access-token", "expiry", "token-type", "uid", "client"],
      methods: [:get, :post, :put, :patch, :delete, :options, :head]
  end
end
API呼び出し
const client = applyCaseMiddleware(
    axios.create({
      baseURL:"http://localhost:3001/api/v1"
}), options)

export default client

参考サイト
(https://medium.com/@bruno_boehm/reactjs-ruby-on-rails-api-heroku-app-2645c93f0814)
(https://qiita.com/mayutakino/items/446512b12b84a07d3f4b)
(https://blap.blog/?p=863#toc13)

0

1Answer

本当にhttp://localhost:3001...というURLにherokuにデプロイしたページからアクセスしようとしているなら、よく考えてみたら分かります。

  1. herokuにデプロイしたページにアクセス
  2. ブラウザに表示される(クライアント)
  3. クライアントがlocalhost:3001にアクセスしようとする
  4. localhostとはつまりは今そのブラウザを動かしている自分のデバイス(PC、Mac、モバイル端末、等々)
  5. その自分のデバイスで3001ポートを開いて待ち構えているサービスが有るのか?

という点だと思います。

dockerで開発していたということですが、多分docker-composeのサービス間通信などを使わず、ポートをとにかくホスト(つまりはdockerを実行している端末)側に開放して(筒抜けにして)、localhost:3001でアクセスできるようにしていたのではないかと考えています。
この場合自分が自分の端末上でフロントエンドを開いて、そこからlocalhostにアクセスしようとしてもそれはつまり自分の開発端末なので、バックエンド(dockerのコンテナ)の3001にアクセスできる。
という事ではないかと。

Untitled-2022-07-09-1153.png

なので、よくよく考えないと見当違いなことをしてるんじゃないかと。

0

Your answer might help someone💌