webエンジニアの気づき

都内ベンチャーでwebエンジニアとして働く著者が、web開発における気付きをまとめています。golang,railsやVue.js(Nuxt)を主に利用。

Vue.jsでaxiosを利用したAjax通信をゆる〜く解説

f:id:k-enter:20210710203118p:plain
vue.js

お題

hogehoge.com/api/v1/organisms というURLを叩いたときに

[{"Name": "犬", "Category": "哺乳類"}, {"Name": "マグロ", "Category": "魚類"}, {"Name": "タカ", "Category": "鳥類"}]

という配列を返すapiを利用するとします。

このapiにVue.jsを使ってアクセスし、情報を取得してみましょう!

完成コード

<template>
// templateは今回割愛
</template>

<script>
import axios from "axios";

export default {
  name: "Sample",
  created() {
    axios.get('hogehoge.com/api/v1/organisms')
    .then(response => {
      console.log(response.data);
    });
    .catch(error => {
      console.log(error)
    });
  },
};
</script>

<style>
// styleは今回割愛
</style>

開発

$ npm install axios --save
  • ② scriptの中にimport axios from "axios";の記述をしましょう。

  • ③ createdの中にてaxiosでのGET通信を呼び出します。

created() {
    axios.get('hogehoge.com/api/v1/organisms')
    .then(response => {
      console.log(response.data);
    });
    .catch(error => {
      console.log(error)
    });
  },
},
  • ④ ブラウザをリロードしてdevツールのコンソールを確認すると、、 Array(3) のようにapi通信を行なって配列が取得できていることがわかると思います。

createdとmountedではどちらに書く方がいい?

createdはDOM要素(divのタグなど)を生成する前に実行されます。 一方、mountedはDOM要素が生成された後に実行されます。

つまり、DOM要素にアクセスしなければいけない場合は、mountedに書く方が好ましいです。

今回は、DOM要素に絡むことがないので、createdを使って処理していますね。

createdの処理にすると、DOMを構築する処理に並行して通信を行えるので 扱うデータ量やコンポーネントが多く大きくなると、パフォーマンスに影響するので注意です。

参考

axios を利用した API の使用 — Vue.js

Vuejs APIアクセスはcreatedとmountedのどちらで行う? - SIerだけど技術やりたいブログ