質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.36%

【Nuxt.js】API連携での「connect ECONNREFUSED 127.0.0.1:80」エラーを解決したい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,192

score 1

【Nuxt.js】API連携での「connect ECONNREFUSED 127.0.0.1:80」エラーを解決したい

状況

laravel apiとnuxtの連携テストで以下エラーが出て、解消できない

connect ECONNREFUSED 127.0.0.1:80

質問

PostmanでAPIリクエストしたところ、データは問題なく返ってきているので、nuxt側の設定が間違っている認識なのですが、解決方法を見つけ出せず、、

イメージ説明

お力をお貸しいただけないでしょうか。。
よろしくお願い致しますmm

ファイル設定

src/routes/api.php

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

Route::get('test', function() {
    return response()->json(['name' => '山田太郎', 'gender' => '男','mail' => 'yamada@test.com']);
});

nuxt.config.js

export default {
  // Global page headers: https://go.nuxtjs.dev/config-head
  head: {
    title: 'sound-matching',
    htmlAttrs: {
      lang: 'en'
    },
    meta: [
      { charset: 'utf-8' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      { hid: 'description', name: 'description', content: '' }
    ],
    link: [
      { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
    ]
  },

  // Global CSS: https://go.nuxtjs.dev/config-css
  css: [
  ],

  // Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
  plugins: [
  ],

  // Auto import components: https://go.nuxtjs.dev/config-components
  components: true,

  // Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
  buildModules: [
  ],

  // Modules: https://go.nuxtjs.dev/config-modules
  modules: [
    '@nuxtjs/axios',
    '@nuxtjs/proxy'
  ],
  axios: {
    baseURL: 'http://localhost:3000'
  },
  proxy: {
    '/api': 'http://sound-matching_api_app_1:8000/api/test',
  },

  // Build Configuration: https://go.nuxtjs.dev/config-build
  build: {
  }
}

pages/index.vue

<template>
<div class="wrapper">
  <Header />
    <main class="main">
      <nav class="side-bar">
        <h3>感情アイコン</h3>
        <ul class="emotion">
          <li></li>
          <li></li>
          <li></li>
          <li></li>
        </ul>
        <h3>ジャンル</h3>
        <ul class="genre">
          <li>ジャンル名</li>
          <li>ジャンル名</li>
          <li>ジャンル名</li>
          <li>ジャンル名</li>
          <li>ジャンル名</li>
        </ul>
      </nav>
      <div class="content">
        <p>{{data}}</p>
        <p>音声ファイル</p>
        <p>音声ファイル</p>
        <p>音声ファイル</p>
        <p>音声ファイル</p>
        <p>音声ファイル</p>
      </div>
      <div>
          <h1>Laravel & Nuxt.js</h1>
          <h2>URL</h2>
          {{ url }}
          <h2>Result</h2>
          {{ message }}
      </div>
    </main>
</div>
</template>

<script>
import Header from "@/components/header.vue";

export default {
  components: {
    Header,
  },
  async asyncData({app}) {
    const url = 'http://localhost/api/test' //Laravel の API URI
    const message = await app.$axios.$get(url)
    return {
        url,
        message
     };
  }
};
</script>

<style scoped>
/* * {
  outline: solid 1px #000;
} */
/* メイン */
.main {
  display: flex;
}
/* サイドバー */
.side-bar {
  border: solid 1px;
  padding: 10px;
}
.side-bar ul {
  list-style: none;
  padding: 0;
}
.side-bar li {
  padding: 10px;
}
.emotion li {
  padding-left: 45px;
}
/* メインコンテンツ */
.content {
  display: flex;
  padding: 10px;
}
.content p {
  padding: 10px;
}
</style>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

ポート番号が指定されておらず、エラーになっているかと思います。
下記のコードを変更していただければ動きそうですがいかがてしょうか?

変更前
const url = 'http://localhost/api/test' //Laravel の API URI

変更後
const url = 'http://localhost:8000/api/test' //Laravel の API URI

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2021/06/05 00:53 編集

    ご回答ありがとうございますmm

    ご教授いただいたこと含め以下のようにして解決しました。なぜかasyncdataが使えないということがおきました・・原因は未だ不明なのですが、何かご存知たったりしますでしょうか。。
    ```
    mounted () {
    axios.get('http://localhost:8000/api/test&#039;)
    .then((res) => {
    console.log(res.data)
    this.message = res.data
    })
    .catch((error) => {
    console.log(error)
    })
    }

    ```

    キャンセル

  • 2021/06/05 20:56

    少し憶測も含まれてしまうこと、ご了承ください。
    return値がjsonではないからかなと思いました。
    下記ですといかがでしょうか?
    ---
    return {
    url: url,
    message: message
    }
    ---

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.36%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る