【发布时间】:2018-01-14 12:50:13
【问题描述】:
我正在使用 vuex 和 axios 等其他工具构建一些 vuejs 仪表板,我一直在为一个非常讨厌的问题苦苦挣扎:似乎我只能提出一个请求!所有后续调用都失败并出现此错误:
获取错误... SyntaxError: 无法对“XMLHttpRequest”执行“setRequestHeader”:“Bearer {the_entire_content_of_the_previous_api_response}”不是有效的 HTTP 标头字段值。
我的商店是这样的:
import axios from "axios";
const state = {
rawData1: null,
rawData2: null
};
const actions = {
FETCH_DATA1: ({ commit }) =>
{
if (!state.rawData1)
return axios.get("/api/data1")
.then((response) =>
{
commit("SET_RAW_DATA1", response.data);
});
},
FETCH_DATA2: ({ commit }) =>
{
if (!state.rawData2)
return axios.get("/api/data2")
.then((response) =>
{
commit("SET_RAW_DATA2", response.data);
});
}
};
const mutations = {
SET_RAW_DATA1: (state, data) =>
{
state.rawData1 = data;
},
SET_RAW_DATA2: (state, data) =>
{
state.rawData2 = data;
}
};
export default
{
namespaced: true,
state,
actions,
mutations
};
我不认为我的 API 有任何问题,因为一切似乎都通过 Postman 顺利运行。
也许这对某些人来说是显而易见的,但我无法发现这是怎么回事,因为我仍然是一个 vue 菜鸟......
哦,我正在像这样处理 axios Promise,如果这有任何兴趣:
this.$store.dispatch("api/FETCH_DATA1").then(() =>
{
// parsing this.$store.state.api.rawData1 with babyparse
}).catch((err) =>
{
this.errorMsg = "Fetching error... " + err;
});
@wajisan 回答后,它似乎确实适用于“传统”调用,但不适用于获取文件调用。我用我的 Echo api 尝试了一些东西,但无济于事......更多详细信息:Serving files with Echo (Golang)。
任何想法,漂亮吗? :)
【问题讨论】:
标签: javascript vuejs2 axios vuex