Day26 axios

简介: 一个 ajax 请求库。
问题
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <script>

        // axios 与 Axios 的关系
        /*
            从语法上来说: axios 不是 Axios 的实例
            从功能上来说: axios 是 Axios 的实例
            axios 是 Axios.prototype.request 函数 bind()返回的函数
            axios 作为对象有 Axios 原型对象上的所有方法, 有 Axios 对象上所有属性
        */


        // instance 与 axios 的区别
        /*
            相同
                (1) 都是一个能发任意请求的函数: request(config) 
                (2) 都有发特定请求的各种方法: get()/post()/put()/delete() 
                (3) 都有默认配置和拦截器的属性: defaults/interceptors

            不同
                (1) 默认配置很可能不一样 
                (2) instance 没有 axios 后面添加的一些方法: create()/CancelToken()/all()
        */


        // axios运行的整体流程
        /*
            整体流程: 
            request(config) ==> dispatchRequest(config) ==> xhrAdapter(config)
            request(config): 将请求拦截器 / dispatchRequest() / 响应拦截器 通过 promise 链串连起来, 返回 promise
            dispatchRequest(config): 转换请求数据 ===> 调用 xhrAdapter()发请求 ===> 请求返回后转换响应数 据. 返回 promise
            xhrAdapter(config): 创建 XHR 对象, 根据 config 进行相应设置, 发送特定请求, 并接收响应数据, 返回 promise
        
        */



        // axios 的请求/响应拦截器是什么
        /*
            请求拦截器:
                在真正发送请求前执行的回调函数
                可以对请求进行检查或配置进行特定处理
                成功的回调函数, 传递的默认是 config(也必须是)
                失败的回调函数, 传递的默认是 error

            响应拦截器
                在请求得到响应后执行的回调函数
                可以对响应数据进行特定处理
                成功的回调函数, 传递的默认是 response
                失败的回调函数, 传递的默认是 error
        */



        // axios 的请求/响应数据转换器是什
        /*
            请求转换器: 
                对请求头和请求体数据进行特定处理的函数

            响应转换器: 
                将响应体 json 字符串解析为 js 对象或数组的函数
        
        */
        if (utils.isObject(data)) {
            setContentTypeIfUnset(headers, 'application/json;charset=utf-8');
            return JSON.stringify(data);
        }

        response.data = JSON.parse(response.data)




        // response与error 的整体结构
        // response的整体结构
        {
            data, status, statusText, headers, config, request
        }
        // error 的整体结构
        {
            message, response, request
        }



        // 如何取消未完成的请求
        /*
            当配置了 cancelToken 对象时, 保存 cancel 函数
                创建一个用于将来中断请求的 cancelPromise 
                并定义了一个用于取消请求的 cancel 函数 
                将 cancel 函数传递出来
            调用 cancel()取消请求 
                执行 cacel 函数, 传入错误信息 message
                内部会让 cancelPromise 变为成功, 且成功的值为一个 Cancel 对象 
                在 cancelPromise 的成功回调中中断请求, 并让发请求的 proimse 失败, 失败的 reason 为 Cancel 对象
        */ 


    </script>

</head>

<body>

</body>

</html>
目录
相关文章
|
11月前
|
XML JSON 前端开发
Axios的特点
Axios的特点
56 0
|
2月前
|
JSON JavaScript 前端开发
axios浅析(一)
 axios 是一个轻量的 HTTP客户端 基于 XMLHttpRequest 服务来执行 HTTP 请求,支持丰富的配置,支持 Promise,支持浏览器端和 Node.js 端。自Vue2.0起,尤大宣布取消对 vue-resource 的官方推荐,转而推荐 axios。现在 axios 已经成为大部分 Vue 开发者的首选。
|
5月前
|
JSON 前端开发 JavaScript
axios的详细使用
axios的详细使用
155 1
|
5月前
|
XML 存储 JSON
Axios
Axios
49 0
|
5月前
|
JSON 前端开发 API
axios使用
axios使用
|
5月前
|
存储 设计模式 JSON
快速理解 Axios
快速理解 Axios
65 0
|
5月前
|
前端开发 JavaScript
Axios有哪些常用的方法?
Axios有哪些常用的方法?
70 0
axios详解
axios详解
78 0
|
JSON JavaScript 前端开发
axios的简单的使用
axios的简单的使用
60 0
|
JSON JavaScript 前端开发
axios是什么
axios是什么
163 1