【发布时间】:2017-09-25 14:33:44
【问题描述】:
我有一个类似如下的课程:
import axios from "axios";
//axios.defaults.headers["Email"] = sessionStorage.getItem('email');
//axios.defaults.headers["Access-Token"] = sessionStorage.getItem('access_token');
class Api {
// users
static getUsers(params={}) { return axios.get("users", {params}) }
static getUser(userId) { return axios.get("users/" + userId) }
static updateUser(userId, data) { return axios.put("users/" + userId, data) }
// other resources...
}
通过阅读 Axios 文档,我发现我可以通过执行以下操作为每个请求设置标头:
axios.defaults.headers["Email"] = sessionStorage.getItem('email');
axios.defaults.headers["Access-Token"] = sessionStorage.getItem('access_token');
如果我在文件开头将这两行插入到类之外,我会收到一个错误,因为尚未设置 sessionStorage。刷新后虽然 sessionStorage 被设置,所以一切正常。
我该如何解决这个问题?我想保持 axios 调用尽可能短。
【问题讨论】:
-
access_tokens和email来自哪里? -
我在登录后设置它们,在另一个文件中......我认为在哪里设置它们并不重要
-
好吧,您可以将检索这些值的代码包装在一个承诺中,当检索到这些值时,您可以调用其他函数 l
-
你能给我举个例子吗?
-
这里是一个例子 - jsfiddle.net/yqtrrreb。在没有看到您的代码设置来检索令牌和电子邮件的情况下,提供具体答案有点困难,但希望 jsfiddle 有所帮助
标签: javascript ecmascript-6 axios