vue nine day

Fetch

基本特性

  • 更加加单得数据获取方式,功能更强大、更灵活,可以看作是xhr的升级版
  • 基于Promeis实现
    <script>
        // Fetch 基本用法
        fetch("url").then(function (data) {
            // text() 是fetch的一部分,返回一个promeis实例,用于获取后台返回的数据
            return data.text();
        }).then(function (data) {
            console.log(data)
        })
    </script>

常用配置

<script>
        // 常用配置选项
        // method
        // body
        // headers
        // get或者delete方式url传递参数方法?或者restful方式都可以
        // url?id=123 url/123
        // post或者put 直接在fetch第二个参数里添加body
        // 普通格式
        // {
        //     method: "post",
        //     body: "uname=lisi&pwd=123"
        // }
        // json格式
        // {
        //     method: "post",
        //         body: JSON.stringify({
        //             uname: "zhangsan",
        //             pwd: "1111"
        //         })
        // }
        // headers 也是这样添加
        fetch("url", {
            method: "get"
        }, function (data) {
            return data.text();
        }).then(function (data) {
            console.log(data)
        })
    </script>

处理json数据

        // 处理json数据
        fetch("url", {
            method: "get"
        }, function (data) {
            return data.json();
        }).then(function (data) {
            console.log(data)
        })

axios

是一个基于Promeis用于浏览器和node的http客户端。

它具有以下特征

  • 支持浏览器和node
  • 支持promeis
  • 可以拦截请求和相应
  • 自动转换json数据
    <!-- 引用axios -->
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script>
        // axios 基本用法
        axios.get("url").then(function(ret){
            console.log(ret.data)
        })
    </script>

传递参数

        // get和delete传参
        // 通过url传递参数和fetch一致
        // 通过params传参
        axios.get("url", {
            params: {
                id: 212
            }
        }).then(function (ret) {
            console.log(ret.data)
        })
        // post和put传参
        axios.post("url",
            {
                id: 212,
                uname: "list",
                pwd: 123
            }
        ).then(function (ret) {
            console.log(ret.data)
        })
        // 表单数据传递
        var params = new URLSearchParams();
        params.append("uname", "list")
        params.append("pwd", 123)
        axios.post("url", params).then(function (ret) {
            console.log(ret.data)
        })

常用全局配置

        // ==========================
        // axios 一些全局配置
        axios.defaults.timeout=3000 // 超时时间 超过多少时间就算请求失败
        axios.defaults.baseURL="url" // 默认地址 再写调用接口时可以直接写后面的api
        axios.defaults.headers["toke"]="dasfalsjk" // 设置请求头 这个就不用解释了吧

拦截器

        // =============================
        // 有点类似于后台的中间件
        // 请求拦截器
        // 可以做一些配置信息
        axios.interceptors.request.use(
            function(config){
                config.headers.mytoken="1231"
                return config
            },function(err){
                console.log(err)
            }
        )
        // 响应拦截器
        // 获取数据之前对数据做一些加工处理
        axios.interceptors.response.use(
            function(res){
                var data=res.data
                return res
            },function(err){
                console.log(err)
            }
        )

async/await

    <script>
        // async/await
        // 跟axios结合 代码可读性更高 别面套娃和疯狂嵌套
        // 如果return返回值是一个promeis实例对象
        async function queryData() {
            var ret = await axios.get("url");
            console.log(ret); // 不用去the了 打印的是json
            
        }
        queryData();
    </script>
原文地址:https://www.cnblogs.com/zy-mousai/p/13061716.html