我正在使用axios作为 HTTP 客户端进行 api 调用,我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
}