axios拦截器和默认header有什么区别?

What is the difference between axios interceptor and default header?

很好奇axios拦截器和默认拦截器的区别header。

我想在header中添加授权。

我知道我可以使用 axios 拦截器和默认 header 管理授权 header。 ()

我不确定何时分别使用拦截器和默认 header。

仅仅是axios提供了两个方法吗?

默认 headers 是静态分配的。您放入其中的值必须在您的代码执行时已知。

axiosOrInstance.defaults.headers.common["x-value"] = "some value you must know";

拦截器是针对每个请求/响应执行的函数。这意味着他们可以访问之前可能不可用的值,甚至可以访问特定于当前请求的值。

axiosOrInstance.interceptors.request.use(config => ({
  ...config,
  headers: {
    ...config.headers,
    "x-value": "whatever"
  }
}), null, {
  synchronous: true,
  runWhen: config => config.url === "only/run/for/this/url"
})

它们也可以是异步的,并在解析之前进行其他异步调用

axiosOrInstance.interceptors.request.use(async config => {
  const someValue = await getSomeAsyncValue()
  return {
    ...config,
    headers: {
      ...config.headers,
      "x-value": someValue
    }
  };
});