• aboutabout
  • servicesservices
  • worksworks
  • mediamedia
  • contactcontact
  • homeサイトトップ
  • about会社概要
  • services業務内容
  • works実績紹介
  • mediaメディア
  • contactお問い合わせ
ja/

media

メディア

  1. サイトトップ
  2. メディア
  3. プログラミングの記事
  4. Vue-CLIのプロジェクトでaxiosを使ってAPIや外部リソースからのデータを取得する

Vue-CLIのプロジェクトでaxiosを使ってAPIや外部リソースからのデータを取得する

  • 2019.09.05
  • プログラミング
  • Vue.js
webアプリケーションを作成するときに、APIなどからデータを取得するなどの要件が含まれることもあるかと思います。今回はVueのプロジェクトをVue-CLIを使って開発するときにAPIからデータを取得する例をまとめていきたいと思います。   VueのプロジェクトでAPIにアクセスする場合には「axios」と呼ばれるものを使います。axiosはブラウザ上やnode.jsで動くHTTPクライアントで、APIへの連携が簡単に実装することができます。axiosはモジュールとして提供されているので、下記のようにnpmもしくはyarn経由でnode_modulesにインストールします。
$ npm install axios
 or
$ yarn add axios
  インストールするとこのようにpackage.jsonに追加されます。 【package.json】※一部抜粋
{
 "dependencies": {
  .......
  "axios": "^0.18.0",
  .......
 },
}
  今回はaxiosでJSON形式の外部データを取得し、それをstateの値に入れてテンプレート内で出力するというのを例にします。ですので、store.jsにaxiosをインポートしてから使います。ここではstateの値を初期値として設定し、mutationsとactionsを定義し、gettersでstateの値を取得できるようにしています。 【store.js】
import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'

Vue.use(Vuex)

export default new Vuex.Store({
 state: {
  dataSet: {}
 },
 mutations: {
  mutateDataSet(state, payload) {
   state.dataSet = payload;
  }
 },
 actions: {
  commitDataSet(store) {
   return axios.get('./data/sample.json')
    .then(response => {
     store.commit('mutateDataSet', response.data)
    })
    .catch((reason) => {
     console.log(reason.message)
    })
  }
 },
 getters: {
  getStateDataSet: (state) => state.dataSet
 }
})
  axiosはactions内で使われています。axiosに続くget()メソッドの引数に外部データのパスを指定することでデータを取得できます。axiosはPromiseベースになっているので、then()メソッドで繋いで値を取得します。引数にはコールバック関数によりmutations経由でstateに取得した値を代入するようにしていきます。その後にはcatch()メソッドで取得が失敗した場合の処理を付け足しています。   また今回サンプルに使ったJSONデータはこちらのような形になります。Vue-CLIの場合ではビルドに含めないファイルはpublicフォルダに入れておきます。 【/public/sample.json】
[
 {
  "id": 1,
  "name": "りんご",
  "price": "100円"
 },
 {
  "id": 2,
  "name": "みかん",
  "price": "50円"
 },
 {
  "id": 3,
  "name": "ぶどう",
  "price": "400円"
 }
]
  そしてVueのコンポーネントファイル内で、取得したデータを扱っていきます。下記のようにcreated内で、storeにアクセスして、dispatch()メソッドで定義したactionsを実行します。 【Vue】※一部抜粋
<script>
export default {
 .......
 created() {
  this.$store.dispatch('commitDataSet')
 }
 .......
}
</script>
  ブラウザのデベロッパーツールで確認すると、実際に取得した外部リソースのデータがmutations経由でstateに値として入っているのが確認できます。 Vue-CLIのプロジェクトでaxiosを使ってAPIや外部リソースからのデータを取得する   もちろんstateに入ったデータは、テンプレート内で出力することもできます。ここではcomputed内でgettersでstateの値を取得し、テンプレート内に出力しています。 【Vue】※一部抜粋
<template>
 <div id="app">
  <pre>{{ dataOutput }}</pre>
 </div>
</template>
<script>
export default {
 .......
 computed: {
  dataOutput() {
   return this.$store.getters.getStateDataSet
  }
 },
 created() {
  this.$store.dispatch('commitDataSet')
 }
 .......
}
</script>
  実際にブラウザで確認するとこのように値が取得できているのが確認できます。 Vue-CLIのプロジェクトでaxiosを使ってAPIや外部リソースからのデータを取得する 上記は外部リソースの静的ファイルにあるデータから値を取得する例ですが、axiosを使うことで、API経由でデータを取得することができます。先ほどと同じようにactions内でget()メソッドにAPIのアクセス先となるURLを指定します。 【store.js】※一部抜粋
.......
actions: {
 commitDataSet(store) {
  return axios.get('https://example.com/api/')
   .then(response => {
    store.commit('mutateDataSet', response.data)
   })
   .catch((reason) => {
    console.log(reason.message)
   })
 }
},
.......
  ここではWordPressのREST APIをサンプルとして使ってみました。同じ要領で取得したデータをstateの値に入っていることが確認できます。 Vue-CLIのプロジェクトでaxiosを使ってAPIや外部リソースからのデータを取得する   テンプレート内にデータを展開することも可能です。このようにすることで、外部のAPI経由で取得したデータをフロント側で加工し、ウェブページ上で見せるような仕組みを作ることができます。 Vue-CLIのプロジェクトでaxiosを使ってAPIや外部リソースからのデータを取得する  
  WordPressなどのCMSに限らず、データベースからAPI経由で情報を取得して、フロント側で扱うなどの場合にはaxiosを使うととても便利ですね。Vue.jsでウェブアプリケーションを作成する場合には必須の機能と言えるのではないでしょうか。
XでシェアLINEで送るはてブに追加

この記事を書いた人オガワ シンヤ

合同会社デザインサプライ代表兼CEO / ディレクター・ウェブデザイナー・フロントエンドエンジニアをやっています。「ウェブとデザインでヒト・モノ・サービスを繋げ新しい価値を生み出す」をコンセプトに日々奮闘中!制作中はダイエットコーラとチョコレートが欠かせないアラフォーWebクリエイター。

Sponsored Link

  • Showcase
  • Startify UI
  • Functional Gradation Generator
  • Coloooors

keyword search

categories

  • WordPress(61)
  • JavaScript(49)
  • Vue.js(48)
  • CSS(46)
  • jQuery(34)
  • Nuxt.js(22)
  • Sass(21)
  • Gulp(17)
  • webpack(16)
  • PHP(14)
  • HTML(14)
  • GSAP(11)
  • React(10)
  • Vite(9)
  • Pug(9)
  • Laravel(8)
  • Cordova(8)
  • Linux(7)
  • Next.js(6)
  • Apache(5)
  • Shopify(4)
  • REST API(4)
  • Node.js(4)
  • Smarty(3)
  • Git(3)
  • JSON(3)
  • その他プログラミング(3)
  • Google Apps API(3)
  • Bootstrap(3)
  • 環境構築・システム(3)
  • TypeScript(2)
  • EJS(2)
  • RMS(2)
  • Docker(2)
  • Instagram API(2)
  • Excel VBA(2)
  • SVG(1)
  • Dart(1)
  • ECカートASP(1)
  • Markdown(1)
  • AMP(1)
  • Nginx(1)
  • XML(1)
  • shellscript(1)
  • Ruby(1)
  • MySQL(1)

recent articles

  • Next.jsとWordPressでヘッドレスCMSのサイトを作成する#6:PWA対応とビルド時のエラー
    read more

    Next.jsとWordPressでヘッドレスCMSのサイトを作成する#6:PWA対応とビルド時のエラー

    2024.12.25/Next.js
  • Next.jsとWordPressでヘッドレスCMSのサイトを作成する#5:アナリティクス・アドセンスの導入とサイトマップ作成
    read more

    Next.jsとWordPressでヘッドレスCMSのサイトを作成する#5:アナリティクス・アドセンスの導入とサイトマップ作成

    2024.08.26/Next.js
  • Next.jsとWordPressでヘッドレスCMSのサイトを作成する#4:静的・動的ルーティングとページ作成
    read more

    Next.jsとWordPressでヘッドレスCMSのサイトを作成する#4:静的・動的ルーティングとページ作成

    2024.07.31/Next.js
  • Next.jsとWordPressでヘッドレスCMSのサイトを作成する#3:メタ情報設定・ファイル最適化・ステート管理
    read more

    Next.jsとWordPressでヘッドレスCMSのサイトを作成する#3:メタ情報設定・ファイル最適化・ステート管理

    2024.06.30/Next.js
  • Next.jsとWordPressでヘッドレスCMSのサイトを作成する#2:コーディング環境の構築
    read more

    Next.jsとWordPressでヘッドレスCMSのサイトを作成する#2:コーディング環境の構築

    2024.05.29/Next.js
  • Next.jsとWordPressでヘッドレスCMSのサイトを作成する#1:インストール・導入
    read more

    Next.jsとWordPressでヘッドレスCMSのサイトを作成する#1:インストール・導入

    2024.04.30/Next.js
  • 次の記事
  • 一覧に戻る
  • 前の記事

まだ依頼内容が決まっていなくても、ご相談ください。

課題の整理や小さな検証、UI/UX・フロントエンドの部分的な支援から始められます。

お問い合わせやご相談はこちらから

Webサイト・プロダクトの企画設計/UI・UXデザイン/フロントエンド開発合同会社デザインサプライ(DesignSupply. LLC)

Office:大阪府大阪市天王寺区清水谷町3-22
Email:info@designsupply-web.com
home
  • サイトトップ
about
  • 3つのポリシー
  • 経営理念
  • 代表・クリエイター紹介
  • 会社概要
services
  • ビジネス・プロダクト支援
  • UI/UX・フロントエンド開発支援
  • プロジェクトの進め方・支援体制
  • エデュケーション事業
works
  • 開発プロジェクト支援
  • クリエイティブ制作
  • 自社プロダクト
media
  • デザイン
  • プログラミング
  • マーケティング
  • Web開発
  • 写真・動画制作
contact
  • お問い合わせ
news
  • インフォメーション
privacy
  • プライバシーポリシー

WE THINK WITH YOU, DESIGN FOR PEOPLE, AND BUILD WHAT WORKS.

WE THINK WITH YOU, DESIGN FOR PEOPLE, AND BUILD WHAT WORKS.

© 2013 - 2026 DesignSupply.LLC
サイトトップへ
contact