如何封装Axios

目标:基于axios封装一个请求模块,调用接口时使用

  1. 添加实例化
  2. 请求拦截器
  3. 响应拦截器
  4. 封装一个通用的请求函数 (非必须)
import axios from 'axios'

const instance = axios.create({
// baseURL 基地址
  baseURL: 'http://pcapi-xiaotuxian-front-devtest.itheima.net/',
  timeout: 5000//超时时间配置
})

//请求拦截器
// 全局注册token
instance.interceptors.request.use(config => {
//注入token代码
  return config
}, e => Promise.reject(e))

// 响应拦截器
//简化数据
//token失效 跳回登录页
// 当后端不是以200-300当作成功标识,而是自定义字段时,手动抛出错误
instance.interceptors.response.use(
    (response)=>{ //在https状态码200-300
      return response.data//这里多个点,返回的数据就少个点data

  // 自定义字段
    // const { success, message } = response.data
    // if (success) {
    //   return response.dataa
    // } else {
    //   return Promise.reject(message)
    // }
    },
    (error) => {//不在在https状态码200-300
      return Promise.reject(error)
    }
)



// 封装一个函数,并不是必须的
// 为了api模块服务  方便使用接口函数的时候 可以不管当前是get请求还是post请求 统一参数传入

/**
 * @description:
 * @param {*} url 请求地址
 * @param {*} method  请求方法 get/post
 * @param {*} reqData 请求参数 必须是一个对象
 * @return {*}
 */
export default function createAPI (url, method, reqData) {
  return instance({
    url,
    method,
    // reqData
    [method.toLowerCase() === 'get' ? 'params' : 'data']: reqData
  })
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值