axios和Promise封装

本文介绍如何利用Promise特性,结合Axios库对HTTP请求进行封装,以简化浏览器和Node.js环境下的接口调用过程。
摘要由CSDN通过智能技术生成

Promise解决异步操作
Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中
进行接口请求封装

// options中包含着数据
export function axiosPackage(options) {
    
  return new Promise((resolve, reject) => {
      
      let httpDefaultOpts = { //http默认配置
          method:options.method,
          url:options.url,
          timeout: 600000,
          params:Object.assign(options.params),
          data:Qs.stringify(options.params),
          headers: options.method=='get'?{
              'X-Requested-With': 'XMLHttpRequest',
              "Accept": "application/json",
              "Content-Type": "application/json; charset=UTF-8",
              // "Authorization": token
          }:{
              'X-Requested-With': 'XMLHttpRequest',
              'Content-Type': options.ContentType || 'application/x-www-form-urlencoded; charset=UTF-8', // 由于部分post请求使用的Content-Type是application/json
              "Accept": "application/json",
          }
      }
      if(options.ContentType == 'application/json'){
        httpDefaultOpts.data = JSON.stringify(Object.assign(options.params))
      }
      if(options.method=='get'){ //判断是get请求还是post请求
          delete httpDefaultOpts.data
      }else{
          delete httpDefaultOpts.params
      }
      instance(httpDefaultOpts)
          .then(response => {//then 请求成功之后进行什么操作
              if(response.data.code == 200){ // 服务端返回code200为成功,其他为错误提示
               resolve(response.data)//把请求到的数据发到引用请求的地方
              }else{
                reject(response)
              }
          })
          .catch(error => {
              if (error && error.response) {   
                switch (error.response.status) {
                case 400: error.message = '请求错误(400)' ; break;
                case 401: error.message = "未授权,请重新登录(401)"; break;
                case 403: error.message = "拒绝访问(403)"; break;
                case 404: error.message = "请求出错(404)"; break;
                case 408: error.message = "请求超时(408)"; break;
                case 500: error.message = "服务器错误(500)"; break;
                case 501: error.message = "服务未实现(501)"; break;
                case 502: error.message = "网络错误(502)"; break;
                case 503: error.message = "服务不可用(503)"; break;
                case 504: error.message = "网络超时(504)"; break;
                case 505: error.message = "HTTP版本不受支持(505)"; break;
                default: error.message = `连接出错(${error.response.status})!`;
                }
                reject(error)             } 
          })

  })
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

知所云

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

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

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

打赏作者

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

抵扣说明:

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

余额充值