Vue.jsでaxiosを利用したAjax通信をゆる〜く解説
お題
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を構築する処理に並行して通信を行えるので 扱うデータ量やコンポーネントが多く大きくなると、パフォーマンスに影響するので注意です。