API呼び出しを行うためのHTTPクライアントとしてaxiosを使用していますgateways
。フォルダーにフォルダーを作成src
し、各バックエンドにファイルを配置して、次のようにaxiosインスタンスを作成しました
myApi.js
import axios from 'axios'
export default axios.create({
baseURL: 'http://localhost:3000/api/v1',
timeout: 5000,
headers: {
'X-Auth-Token': 'f2b6637ddf355a476918940289c0be016a4fe99e3b69c83d',
'Content-Type': 'application/json'
}
})
コンポーネントで、次のように API からデータをフェッチする関数を使用できます。
methods: {
getProducts () {
myApi.get('products?id=' + prodId).then(response => this.product = response.data)
}
}
同様に、これを使用して vuex ストアのデータを取得することもできます。
編集済み
専用のvuex モジュールで製品関連データを維持している場合、コンポーネントのメソッドからアクションをディスパッチできます。これにより、バックエンド API が内部的に呼び出され、ストアにデータが入力されます。コードは次のようになります。
コンポーネント内のコード:
methods: {
getProducts (prodId) {
this.$store.dispatch('FETCH_PRODUCTS', prodId)
}
}
vuex ストアのコード:
import myApi from '../../gateways/my-api'
const state = {
products: []
}
const actions = {
FETCH_PRODUCTS: (state, prodId) => {
myApi.get('products?id=' + prodId).then(response => state.commit('SET_PRODUCTS', response))
}
}
// mutations
const mutations = {
SET_PRODUCTS: (state, data) => {
state.products = Object.assign({}, response.data)
}
}
const getters = {
}
export default {
state,
mutations,
actions,
getters
}