使用axios添加请求头的几种方式

1.传入配置参数

单次请求

const config = {
  headers:{
    header1: value1,
    header2: value2
  }
};
const url = "api endpoint";

const data ={
  name: "Jake Taper",
  email: "taperjake@gmail.com"
}
//GET
axios.get(url, config)
  .then(res=> console.log(res))
  .catch(err=> console.log(err))

//POST
axios.post(url, data, config)
  .then(res => console.log(res))
  .catch(err => console.log(err))

多次请求

//给所有请求添加请求头
axios.defaults.headers.common['Authorization'] = `Bearer ${localStorage.getItem('access_token')}`;

//给所有POST请求添加请求头
axios.defaults.headers.post['Authorization'] = `Bearer ${localStorage.getItem('access_token')}`;

2.创建axios实例

let reqInstance = axios.create({
  headers: {
    Authorization : `Bearer ${localStorage.getItem(‘access_token’)}`
    }
  }
})
reqInstance.get(url);

3.使用axios拦截器

axios.interceptors.request.use(
  config => {
    config.headers['Authorization'] = `Bearer ${localStorage.getItem('access_token')}`;
        return config;
    },
    error => {
        return Promise.reject(error);
    }
);

使用拦截器的另一个好处是可以设置token过期时自动刷新token:

const refreshToken= ()=>{
  // gets new access token
}

// 403请求时自动刷新access token
axios.interceptors.response.use(
    response => {
        return response;
    },
    error => {
        if(error.response.status == 403){
            refreshToken()
        }
    }
);

Using Axios to set request headers - LogRocket Blog

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。