美文网首页
2020-02-16 axios

2020-02-16 axios

作者: Axe小莱 | 来源:发表于2020-02-16 20:00 被阅读0次
    • 这里只写了一些关注的点,比较简略,具体还要看网上各位大佬写的文章和文档

    axios拦截器

    • 主要有两种: 请求拦截器和响应拦截器
    • 请求: 发送请求的时候统一处理,比如要在请求头headers里加东西,如会话id,token等
          let axios2 = axios.create({
            timeout: 1000,
          });
          axios2.interceptors.request.use(
            config => {
              config.headers.srcChannel = 'KAH';
              return config;
            },
            err => {
              return Promise.reject(err);
            }
          );
    
    • 响应: 就是后端返回的响应进行处理,比如对errorCode进行判断等
          axios2.interceptors.response.use(
            response => {
              // 拦截响应,统一处理
              if (response.data.errorCode) {
                if (response.data.errorCode === '0') {
                  return response;
                }
              }
              return Promise.reject(response);
            },
            error => {
              return Promise.reject(error)
            }
          );
    

    axios的主要作用

    • axios主要是用于向后台发起请求的,还有在请求中做更多是可控功能。

    axios 配置

    • axios defalut 配置
    // axios_init.js
    import axios from 'axios';
    
    // 设置默认的配置
    axios.defaults.headers.testDefault = 'test2';
    
    export default axios;
    
    import axios from 'axios'
    import axios_init from './assets/js/axios_init';
    
    export default {
      name: 'app',
      components: {
        // HelloWorld
      },
      created() {
      },
      methods: {
        test() {
          let axios2 = axios.create({
            timeout: 1000,
          });
          axios2.interceptors.request.use(
            config => {
              config.headers.srcChannel = 'KAH';
              return config;
            },
            err => {
              return Promise.reject(err);
            }
          );
          axios2.interceptors.response.use(
            response => {
              // 拦截响应,统一处理
              if (response.data.errorCode) {
                if (response.data.errorCode === '0') {
                  return response;
                }
              }
              return Promise.reject(response);
            },
            error => {
              return Promise.reject(error)
            }
          );
          axios2.get('/data3.json').then(res => {
            console.log(res);
          })
          axios_init.get('/data2.json').then(res => {
            console.log(res);
          })
        }
      }
    }
    </script>
    
    

    自定义实例默认值

    // 创建实例时设置配置的默认值
    var instance = axios.create({
      baseURL: 'https://api.example.com'
    });
    
    // 在实例已创建后修改默认值
    instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;
    

    配置的优先顺序

    配置会以一个优先顺序进行合并。这个顺序是:在 lib/defaults.js 找到的库的默认值,然后是实例的 defaults 属性,最后是请求的 config 参数。后者将优先于前者。这里是一个例子:

    // 使用由库提供的配置的默认值来创建实例
    // 此时超时配置的默认值是 `0`
    var instance = axios.create();
    
    // 覆写库的超时默认值
    // 现在,在超时前,所有请求都会等待 2.5 秒
    instance.defaults.timeout = 2500;
    
    // 为已知需要花费很长时间的请求覆写超时设置
    instance.get('/longRequest', {
      timeout: 5000
    });
    

    相关文章

      网友评论

          本文标题:2020-02-16 axios

          本文链接:https://www.haomeiwen.com/subject/dapmfhtx.html