axios 拦截器的用法

什么是拦截器

拦截器就是拦截每一次的请求和响应,然后进行相应的处理。请求拦截器,它可以统一在你发送请求前在请求体里加上token;响应拦截器,是在接受到响应之后进行的一些操作,比如,服务器返回登录状态失效,需要重新登录的时候,就给它跳到登录页面;

创建 axios 实例

const Axios = axios.create({
    baseURL: HOST, // 请求的域名
    timeout: 10000000000, // 响应超时时间
    responseType: "json",
    withCredentials: true, // 跨域请求是否要携带cookie
    headers: {
      'Content-Type': 'application-json/x-www-form-urlencoded;charset=utf-8',
    }
  });

请求拦截器

 //在发送请求之前做的一些操作,例如加上token
Axios .interceptors.request.use( config => {  
     // 为请求头对象添加 token 验证的 Authorization 字段
     config.headers.Authorization = window.sessionStorage.getItem('token')
     return config
}, error => {
     //对请求错误做些什么
     return Promise.reject(error)
})

响应拦截器

//接收到响应后要做些什么,比如跳转到登录页
Axios.interceptors.response.use(response => {
	response => {
    //拦截响应,做统一处理 
    if (response.data.code) {
      switch (response.data.code) {
        case 1002:
          store.state.isLogin = false
          router.replace({
            path: 'login',
            query: {
              redirect: router.currentRoute.fullPath
            }
          })
      }
    }
    return response
}, error => {
     //对响应错误做些什么
     return Promise.reject(error)
})

对每个请求方式进行封装

export function requestGet(url, query) {
// 查
    return Axios.get(url, { params: query || {} })
      .then((res) => {
        return Promise.resolve(res.data)
        console.log(res.data);
      })
  }
 
  export function requestPost(url, data) {
  // 改
    return Axios.post(url, data)
      .then((res) => {
        return Promise.resolve(res.data)
      })
  }
  
  export function requestPut(url, data) {
  // 增
    return Axios.put(url, data)
      .then((res) => {
        return Promise.resolve(res.data)
      })
  }
  
  export function requestDelete(url) {
  // 删
    return Axios.delete(url)
      .then((res) => {
        return Promise.resolve(res.data)
      })
  }

应用

最后把封装的实例在需要的地方导入就可以了。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码搬运媛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值