axios 怎么设置默认参数?

发布于 2022-09-05 07:35:37 字数 652 浏览 10 评论 0

项目的很多请求都需要携带上用户的token和uid才能返回数据,在每个地方都写一次又感觉太麻烦了。
看了下axios的全局默认配置:

axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

好像不能写在这里面,如果写在请求的拦截器里面应该怎么写才能让所有的请求都默认带上token和uid呢?难不成直接在里面获取一次token和uid就行了吗?

// Add a request interceptor
axios.interceptors.request.use(function (config) {
    // Do something before request is sent
    return config;
  }, function (error) {
    // Do something with request error
    return Promise.reject(error);
  });

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

翻了热茶 2022-09-12 07:35:37

想了下我还是贴一下我的方法吧,仅供参考

// 请求的拦截器
axios.interceptors.request.use(function (config) {
    const token = localStorage.getItem('token')
    const uid = localStorage.getItem('uid')
     // 判断请求的类型
     // 如果是post请求就把默认参数拼到data里面
     // 如果是get请求就拼到params里面
    if(config.method === 'post') {
        let data = qs.parse(config.data)

        config.data = qs.stringify({
            token: token,
            uid: uid,
            ...data
        })
    } else if(config.method === 'get') {
        config.params = {
            token: token,
            uid: uid,
            ...config.params
        }
    }
    return config;
  }, function (error) {
    return Promise.reject(error);
  })
情痴 2022-09-12 07:35:37
axios.defaults.transformRequest = [function(data) {
    ...
}];

transformRequest就是在axios发送数据之前对需要发的数据进行处理,可以在这里附加tokenuid然后返回data

生活了然无味 2022-09-12 07:35:37

楼主怎么实现的,为什么全局设置baseUrl不生效的

陌路终见情 2022-09-12 07:35:37

axios的使用姿势
希望能帮到楼主

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文