安装 axios

  • doc
  • npm install axios -S

封装

  • axios.js
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    // 封装 axios 的请求,返回重新封装的数据格式
    // 对错误的统一处理
    import axios from 'axios'
    import errorHandle from './errorHandle'

    class HttpRequest {
    constructor(baseUrl) {
    this.baseURL = baseUrl
    }
    // 获取 axios 配置
    getInsideConfig() {
    const config = {
    baseURL: this.baseURL,
    headers: {
    'Content-Type': 'application/json;charset=utf-8'
    },
    // 跨域请求的时候是否把本地 cookie 带上
    withCredentials: false, // default
    timeout: 10000
    }
    return config
    }
    // 设定拦截器
    interceptors(instance) {

    // 请求拦截器
    instance.interceptors.request.use(function (config) {
    return config;
    }, function (error) {
    errorHandle(error)
    return Promise.reject(error);
    });

    // 响应请求的拦截器
    instance.interceptors.response.use(function (response) {
    if (response.status === 200) {
    return Promise.resolve(response.data)
    } else {
    return Promise.reject(response)
    }
    // return response;
    }, function (error) {
    errorHandle(error)
    return Promise.reject(error);
    });
    }
    // 创建实例
    request(options) {
    const instance = axios.create()
    const newOptions = Object.assign(this.getInsideConfig(), options)
    this.interceptors(instance)
    return instance(newOptions)
    }
    get(url, config = {}) {
    const options = Object.assign({
    method: 'get',
    url: url
    }, config)
    return this.request(options)
    }
    post(url, data = {}) {
    return this.request({
    method: 'post',
    url: url,
    data: data
    })
    }
    }

    export default HttpRequest
  • request.js
    1
    2
    3
    4
    5
    import HttpRequest from './axios'
    import config from '@/config'
    const baseURL=process.env.NODE_ENV === 'development' ? config.baseUrl.dev : config.baseURL.pro
    const axios = new HttpRequest(baseURL)
    export default axios
  • errorHandle.js
    1
    2
    3
    4
    5
    const errorHandle = (err) => {
    console.log(err)
    }

    export default errorHandle

使用

1
2
3
4
5
6
7
8
9
10
11
12
import axios from '@/utils/request';
/**
* 获取验证码接口
* @param {*} sid 唯一标识
*/
export const getCode=(sid)=>{
return axios.get('/getCaptcha',{
params:{
sid
}
})
}