我正在使用axios作为HTTP客户端进行API调用,我在我的src
文件夹中创建了一个gateways
文件夹,并放置每个后端的文件,创建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 模块 来管理产品相关的数据,
你可以从组件的方法中分发一个 action,它将在内部调用后端 API 并在 store 中填充数据,代码将类似于以下内容:
组件中的代码:
methods: {
getProducts (prodId) {
this.$store.dispatch('FETCH_PRODUCTS', prodId)
}
}
在 vuex store 中的代码:
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))
}
}
const mutations = {
SET_PRODUCTS: (state, data) => {
state.products = Object.assign({}, response.data)
}
}
const getters = {
}
export default {
state,
mutations,
actions,
getters
}