美文网首页
30.axios的封装

30.axios的封装

作者: 最爱喝龙井 | 来源:发表于2019-12-05 15:27 被阅读0次

为什么要对框架进行封装

我们在进行网络请求的时候,可以在每个页面引入axios,然后通过它发送网络请求,但是这样做的话,对框架就太过于依赖了,假如有一天这个框架不在维护,而你的项目中右100个页面都是通过引入框架发送的请求的话,那么你就去厕所哭吧😎,所以,我们需要想办法对这个框架进行一层封装,然后所有需要发送网络请求的页面都来引入我封装好的代码,这样如果出问题了,我只需要改我封装的代码就好了👍

如何对框架进行封装

首先,我们创建一个network的文件夹,里面新建一个request.js的文件,我们封装的代码就写在这里面;
然后,我们在request文件中的代码如下:

  • 第一种封装方式:
import axios from 'axios';

export function request(config, success, failure) {
    const instance = axios.create({
        baseURL: 'https:api.github.com',
        timeout: 1000
    });
    instance(config)
    .then(res => {
        success(res)
    })
    .catch(err => {
        failure(err)
    })
}
  • 调用方法:
request({
      url: '/users'
    }, res => {
      console.log(res)
    })
  • 第二种封装方式:将config看成一个对象
export function request(config) {
    const instance = axios.create({
        baseURL: 'https:api.github.com',
        timeout: 1000
    });
    instance(config.baseConfig)
    .then(res => {
        config.success(res)
    })
    .catch(err => {
        config.failure(err)
    })
}
  • 调用方式:
request({
      baseConfig: {
        url: '/users'
      },
      success(res) {
        console.log(res)
      }
    })
  • 第三种封装方式:promise的方式
export function request(config) {
    return new Promise((request, reject) => {
        const instance = axios.create({
            baseURL: 'https:api.github.com',
            timeout: 1000
        });
        instance(config)
            .then(res => {
                request(res)
            })
            .catch(err => {
                reject(err)
            })
    })
}
  • 调用方式:
request({
      url: '/users'
    }).then(res => {
      console.log(res)
    })
  • 第四种封装方式:promise简写,因为实例的axios返回的就是一个promise对象
export function request(config) {
    const instance = axios.create({
        baseURL: 'https:api.github.com',
        timeout: 1000
    });
    
    return instance(config)

}
  • 调用方式:
request({
      url: '/users'
    }).then(res => {
      console.log(res)
    })

相关文章

  • 30.axios的封装

    为什么要对框架进行封装 我们在进行网络请求的时候,可以在每个页面引入axios,然后通过它发送网络请求,但是这样做...

  • JavaScript面向对象与设计模式

    1. 面向对象 1.1 封装 封装的目的在于将信息隐藏。广义的封装不仅包括封装数据和封装实现,还包括封装类型和封装...

  • 02.OOP面向对象-3.一些理解

    对封装的理解?封装,类本身就是一个封装,封装了属性和方法。方法也是封装,对一些业务逻辑的封装。私有也是封装,将一些...

  • node学习4

    Nodejs 路由模块封装、封装仿照 express 的路由 Nodejs 路由模块封装 封装仿照 express...

  • python 文件及文件夹的操作和异常捕获

    1、面向对象的特征:封装、继承、多态 1.1、封装: 函数一种封装,封装了一些逻辑代码 类也是一种封装,封装属性和...

  • view的封装

    封装view较为简单,封装tableview比较麻烦,封装tableview的方法后面会有。 view的封装 如果...

  • 面向对象02-封装

    面向对象02-封装 [TOC] 好处 广义的封装:方法、类、包狭义的封装:类中的属性的封装 封装的具体体现 规范 代码

  • JavaScript的面向对象--封装的实现、类型、变化

    封装的目的是将信息隐藏。一般而言,我们讨论的封装是封装数据和封装实现。这里将讨论更广义的封装,不仅包括封装数据和封...

  • 2018-03-17

    Python的封装和继承 1、封装顾名思义,就是把内容封装好,再调用封装好的内容。封装分为两步:第一步为封装内容第...

  • MVVM在网络中应用(OkHttp+Retrofit+Gson+

    1.封装请求地址常量类 2.封装网络工具类 3.封装接口类 4.封装DTO类——即返回的数据封装模型 5.封装请求...

网友评论

      本文标题:30.axios的封装

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