axios
1.1、axios简介
是什么 ?:Promise-based HTTP client library.
开发语言:JavaScript
源码仓库:https://github.com/axios/axios
运行环境:Web浏览器Node.js Runtime
1.2、在前端开发中引入axios
1.2.1、通过开源CDN引入axios

jsDelivr⤵︎

<script src="https://cdn.jsdelivr.net/npm/axios@0.19.2/dist/axios.min.js"></script>

BootCDN⤵︎

<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.19.2/axios.min.js"></script>
1.2.2、通过下载到本地引入axios

step1、通过包管理器安装axios

包管理器安装命令
bowernpm bower axios --save
npmnpm install axios --save
yarnyarn add axios

step2、在HTML代码中引入JavaScript

<script src="/bower_components/axios/dist/axios.min.js"></script>
1.3、在Node.js中引入axios

step1、通过包管理器安装axios

包管理器安装命令
npmnpm install axios --save
yarnyarn add axios

step2、在Node.js代码中导入axios模块

const axios = require("axios");
1.4、axios API
1.4.1、axiosInstance = axios.default

获得默认的实例。使用该实例可获得IDE自动提示功能。

1.4.2、axiosInstance = axios.create(config :Config)

创建新实例。该实例没有IDE自动提示功能。其实完全没有必须要使用该方法。

const axiosInstance = axios.create({
    baseURL: 'https://some-domain.com/api/',
    timeout: 1000,
    headers: {'X-Custom-Header': 'foobar'}
});
1.4.3、axiosInstance.defaults :Config

修改默认的配置。

axiosInstance.defaults.baseURL      = 'http://blog.fpliu.com';
axiosInstance.defaults.timeout      = 3000;
axiosInstance.defaults.responseType = 'arraybuffer';
1.4.4、axiosInstance.interceptors.request.use(function(config : Config) =>Config)

请求拦截器

示例:

axiosInstance.interceptors.request.use(config => {
    config.responseType = 'arraybuffer'
    config.timeout = 3000;
    console.log("request interpreter, config = ", config);
    return config;
});

注意:必须要有return config;

1.4.5、axiosInstance.interceptors.response.use(function(response : Response) =>Response)

响应拦截器

示例:

//https://github.com/ashtuchkin/iconv-lite
const iconv = require('iconv-lite');

axiosInstance.interceptors.response.use(response => {
    if (response.data) {
        //因为页面是GBK编码的,不得不自己做解码处理
        response.data = iconv.decode(response.data, "GBK");
        return response;
    }
    throw new Error("response.data is empty!!");
});

注意:必须要有return response;

1.4.6、Promise promise = axiosInstance.get(url: String, config ?:Config)

发起HTTP GET请求。

示例:

axiosInstance
    .get('/user?id=12345')
    .then(function (response) {
        console.log(response);
    })
    .catch(function (error) {
        console.log(error);
    })
    .then(function () {
        // always executed
    });
axiosInstance
    .get('/user', {params: {id: 12345}})
    .then(function (response) {
        console.log(response);
    })
    .catch(function (error) {
        console.log(error);
    })
    .then(function () {
        // always executed
    });
1.4.7、Promise promise = axiosInstance.post(url: String, data: Object, config ?:Config)

发起HTTP POST请求。

示例:

axiosInstance
    .post('/login', {phoneNumber: '12345678910', password: 'xxxx'})
    .then(function (response) {
        console.log(response);
    })
    .catch(function (error) {
        console.log(error);
    })
    .then(function () {
        // always executed
    });