如何封装axios

Axios 封装及接口管理
utils/request.js 封装 axios ,开发者需要根据后台接口做修改。

1.service.interceptors.request.use 里可以设置请求头,比如设置 token。
2.config.hideloading 是在 api 文件夹下的接口参数里设置,下文会讲。
3.service.interceptors.response.use 里可以对接口返回数据处理,比如 401 删除本地信息,重新登录。 

import axios from 'axios'
// 导入baseUrl
import { baseUrl } from '@/config'
// 导入Toast
import { Toast } from 'vant';
let service = axios.create({
    baseURL: baseUrl, // url = base api url + request url
    // withCredentials: true, // send cookies when cross-domain requests
    timeout: 5000 // request timeout
  })
  let loading
// 请求拦截
service.interceptors.request.use(config =>{
    //1.loading动画开启
     loading=Toast.loading({
        duration: 5000,
        message: '加载中...',
        forbidClick: true,
      });
    //2.token设置(把token添加到请求头中)  vuex
    config.headers["Authorization"] = sessionStorage.getItem("token");
    return config
})
// 响应拦截器
service.interceptors.response.use(
      res=> {
        //1、关闭loading
        loading.clear();
        return Promise.resolve(res);
      },
      error => {
        loading.clear();
        console.log("err" + error);
        return Promise.reject(error);
      }
    );
    export default service

接口管理
在src/api 文件夹下统一管理接口

1.你可以建立多个模块对接接口, 比如 home.js 里是首页的接口这里讲解 user.js
2.url 接口地址,请求的时候会拼接上 config 下的 baseApi
3.method 请求方法
4.data 请求参数 qs.stringify(params) 是对数据系列化操作
5.hideloading 默认 false,设置为 true 后,不显示 loading ui 交互中有些接口不需要让用户感知
 

import qs from 'qs'
// axios
import request from '@/utils/request'
//user api

// 用户信息
export function getUserInfo(params) {
  return request({
    url: '/user/userinfo',
    method: 'post',
    data: qs.stringify(params),
    hideloading: true // 隐藏 loading 组件
  })
}

如何调用

// 请求接口
import { getUserInfo } from '@/api/user.js'

const params = { user: 'sunnie' }
getUserInfo(params)
  .then(() => {})
  .catch(() => {})

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值