项目的很多请求都需要携带上用户的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就行了吗?//Addarequestinterceptoraxios.interceptors.request.use(function(config){//Dosomethingbeforerequestissentreturnconfig;},function(error){//DosomethingwithrequesterrorreturnPromise.reject(error);});
2 回答
智慧大石
TA贡献1946条经验 获得超3个赞
想了下我还是贴一下我的方法吧,仅供参考//请求的拦截器axios.interceptors.request.use(function(config){consttoken=localStorage.getItem('token')constuid=localStorage.getItem('uid')//判断请求的类型//如果是post请求就把默认参数拼到data里面//如果是get请求就拼到params里面if(config.method==='post'){letdata=qs.parse(config.data)config.data=qs.stringify({token:token,uid:uid,...data})}elseif(config.method==='get'){config.params={token:token,uid:uid,...config.params}}returnconfig;},function(error){returnPromise.reject(error);})
添加回答
举报
0/150
提交
取消