如何在拦截响应时更新axios实例?

时间:2018-06-18 12:01:46

标签: javascript ajax typescript request axios

如何在没有第二次请求的情况下使用来自此响应的数据拦截响应时更新axios实例?在任何请求之后,可以在任何响应中接收新令牌。最后收到的令牌应该在任何新请求中使用。

const request = (axios as any).create({
  baseURL: mainConfig.apiBaseUrl,
  headers: {
    'Content-Type': 'application/json',
  },
});

// Check token relevance and update if not relevance.
request.interceptors.response.use(response => {
  if (response.headers.token !== undefined) {
    response.config.headers.token = response.headers.token;
  }
  return response;
});

1 个答案:

答案 0 :(得分:0)

在这里,您无法将其设置为类似这样的进一步请求。

您应该使用globalStorage或任何其他存储来存储此令牌。

import Store from "Store";

const {token} = Store;

const request = (axios as any).create({
  baseURL: mainConfig.apiBaseUrl,
  headers: {
    'Content-Type': 'application/json',
    'Authorization': token
  },
});

// Set token
request.interceptors.response.use(response => {
  const {token} = response.headers;
  if (token) {
    Store.setToken(token);
  }
  return response;
}