はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Vue.js】axiosを使ってJsonを取得する

はじめに

Vue.jsでJsonデータを使いたいときがあり、そのやり方を備忘録の意味合いもかねて残しておきたいと思います。

Json

今回使うJsonはこんな感じ。

Monsters.json
[
    {"id": 1, "name": "スライム"},
    {"id": 2, "name": "ドラキー"},
    {"id": 3, "name": "ももんじゃ"}
]

axiosを使う

axios.get('Monsters.json')
    .then(response => {
        this.monsters = response.data
    })
    .catch(err => {
        console.error(err)
    })

axiosとはHTTP通信んを簡単に扱えるようにしたJavascriptのライブラリのようで、非常に簡単にリクエスト,レスポンスを取得することができます。

thenは成功したときの処理を,catchにはなにかしらのエラーで失敗したときの挙動を書きます。

実際に使ってみる

index.html
<!DOCTYPE html>
<html lang="js">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>AxiosTest</title>
</head>
<body>
    <div id="app">
        <ul>
            <li v-for="(item, index) in monsters" v-bind:key="item.id">
                ID.{{ item.id }} Name.{{ item.name }}
            </li>
        </ul>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
    <script src="https://cdn.jsdelivr.net/npm/axios@0.18.0/dist/axios.min.js"></script>
    <script>
        var app = new Vue({
            el: '#app',
            data: {
                monsters: [],
            },
            created: function(){
                axios.get('Monsters.json')
                    .then(response => {
                        this.monsters = response.data
                    })
                    .catch(err => {
                        console.error(err)
                    })
            }
        })
    </script>
</body>
</html>

これを実際に組み込んでみるとこんな感じ。今回の場合はindex.htmlMonsters.jsonを同じフォルダ内に入れることを忘れないでください。

さいごに

axiosについて調べてみるとタイムアウトを設定できたりpostができたりと色々とできるようなので、是非詳しく知りたい方はドキュメントをみてみてください!

axios - npm