• axios知识点


    axios并发请求:
        axios.all(
            [
                this.getAllTask(),// 请求1
                this.getAllCity()// 请求2
            ])
          .then(axios.spread(function(allTask, allCity) {
            console.log('请求1结果', allTask)
            console.log('请求2结果', allCity)
          }))

    axios相关配置:
        axios.create({
            baseURL: "",// 请求的域名、基本地址
            timeout: 1000,// 请求超时时长,单位ms
            url: "",// 请求路径
            method: "get、post、put、patch、delete", //请求类型
            headers: {},// 请求头
            params: {}, //参数,请求参数会拼接在URL上
            data: {}, //参数,请求参数放在请求体里
        })
        
        配置形式:
            1、axios全局配置:配置默认值,一般baseUrl,timeout两个参数
                axios.default.baseUrl="";
            2、axios实例配置:创建实例后配置参数
                let instance = axios.create({})
                instance.default.baseUrl="";
            3、axios请求配置:发起请求的时候添加配置参数
                let instance = axios.create({})
                instance.get("", {timeout: 5000})
        优先级;axios请求配置 > axios实例配置 > axios全局配置

    axios拦截器

      const service = axios.create({
           baseURL: process.env.BASE_URL
      });
      // 请求拦截器
      service.interceptors.request.use(config => {
        return cofing;
      },error => {
        Promise.reject(error);
      })
      // 请求响应拦截器
      service.interceptors.response.use(response=> {
        return response;
      },error => {
        return Promise.reject(error);
      })
     
    axios封装
      import axios from 'axios'

    let instance = axios.create({
        baseURL: 'http://localhost:8080/api',
        timeout: 1000
    })
        const Http = {};// 包裹请求方法的容器
        // async作用:编码进入回调地狱
        Http[key] = async function(
            params,
            isFormData=false,// 标识是否是form-data请求
            config={} // 配置参数
        ) {
            let url = api.url;
            let newParams = {};
            // content-type是否是form-data的判断
            if(params && isFormData) {
                newParams = new FormData();
                for(let i in params) {
                    newParams.append(i, params[i]);
                }
            } else {
                newParams = params;
            }
            let response = {}; // 请求的返回值
       config.params = newParams;
            try {
                response = await instance[api.method](url, config)
            } catch(err) {
                response = err;
            }
            
            return response;// 返回响应值
    }

    // 拦截器的添加
    instance.interceptors.request.use(config=>{
        // 发起请求前做些什么
        Toast.loading({
        })
        return config;
    },err => {
        // 请求失败
        Toast.clear();
        Toast("请求失败");
    })

    // 响应拦截器
    nstance.interceptors.response.use(res=>{
        Toast.clear();
        return res.data;
    },err => {
        // 响应失败
        Toast.clear();
        Toast("请求失败");
    });

    export default Http
     
     
    Axios封装实例
      const CONTACT_API = {
        getContactList: {
            method: 'get',
            url: '/contactList'
        },
        // 新建联系人,form-data形式
        newContactForm: {
            method: 'post',
            url: '/contact/new/form
        },
        // 新建联系人,application/json形式
        newContactJson: {
            method: 'post',
            url: '/contact/new/json
        },
        
        // 编辑联系人
        editContact: {
            method: 'put',
            url: '/contact/edit
        },
        // 删除联系人
        delContact: {
            method: 'delete',
            url: '/contact/delete
        }
    }

    export default CONTACT_API;




    import axios from 'axios'
    import service from './contactApi'


    // service 循环遍历输出不同的请求方法
    let instance = axios.create({
        baseURL: 'http://localhost:8080/api',
        timeout: 1000
    })
    const Http = {};// 包裹请求方法的容器
    for(let key in service) {
        let api = service[key];// url
        // async作用:编码进入回调地狱
        Http[key] = async function(
            params,
            isFormData=false,// 标识是否是form-data请求
            config={} // 配置参数
        ) {
            // let res = null;
            // try {
            //     res = await axios.get('url');
            //  catch(err) {
            //     res = err;//捕捉catch内容
            // }
            let url = api.url;
            let newParams = {};
            // content-type是否是form-data的判断
            if(params && isFormData) {
                newParams = new FormData();
                for(let i in params) {
                    newParams.append(i, params[i]);
                }
            } else {
                newParams = params;
            }
            // 不同的请求,不同的判断
            let response = {}; // 请求的返回值
            if(api.method === 'put'
                || api.method === 'post'
                || api.method === 'patch') {
                try {
                    response = await instance[api.method](url, newParams, config)
                } catch(err) {
                    response = err;
                }
            } else if(api.method === 'get'
                || api.method === 'delete') {
                config.params = newParams;
                try {
                    response = await instance[api.method](url, config)
                } catch(err) {
                    response = err;
                }
            }
            
            return response;// 返回响应值
        }
    }

    // 拦截器的添加
    instance.interceptors.request.use(config=>{
        // 发起请求前做些什么
        Toast.loading({
        })
        return config;
    },err => {
        // 请求失败
        Toast.clear();
        Toast("请求失败");
    })

    // 响应拦截器
    nstance.interceptors.response.use(res=>{
        Toast.clear();
        return res.data;
    },err => {
        // 响应失败
        Toast.clear();
        Toast("请求失败");
    });

    export default Http
  • 相关阅读:
    Coding.net进阶,使用Git管理代码
    经典算法问题
    浅谈三款常用软件
    Coding.net简单使用指南
    湖北宜化总结
    天顺风能经验总结
    Vue中watch的高级用法
    html 锚点三种实现方法
    【机器学习】EM算法详细推导和讲解
    【机器学习】BP神经网络实现手写数字识别
  • 原文地址:https://www.cnblogs.com/vofill/p/14135767.html
Copyright © 2020-2023  润新知