Vue之axios请求

一、简述

  1、vue.js默认没有ajax功能。

  2、取而代之的即axios来实现与后端服务器的数据交互。

  3、axios本质上就是ajax,所以会被同源策略所限制。

二、axios的请求方式

  1、axios.get:向服务器请求获取数据。

  2、axios.delete:向服务器请求删除数据,格式和参数与get一致。

  3、axios.put:向服务器请求更新整行数据。

  4、axios.patch:向服务器请求更新某个字段数据,格式与参数与put一致。

  5、axios.post:向服务器请求上传数据。

  6、其中axios.get与axios.post为常用方法。

  7、实例,以axios.get为例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="vue.min.js"></script>
    <script src="axios.js"></script>
</head>
<body>
<div id="id_1">
    <div>{{r_data}}</div>
</div>
<!------------------------------------------------------------>
<script>
    let vueObj = new Vue({
        el: '#id_1',
        data: {
            r_data: null
        },
        beforeMount: function () {
            // get里面的第一个参数为数据接口的url
            // get里面的第二个参数可不填或选填多个,如请求参数,请求头内容,json对象等,是用来提交给数据接口的参数
            axios.get('http://wthrcdn.etouch.cn/weather_mini',
                {
                    params: {
                        city: '南京'  // 相当于在url后面写 ?city=南京
                    },
                    headers: {}  // 书写选项名和选项值的键值对
                }
            ).then(  // 定制请求成功以后的回调函数
                response => {
                    this.r_data = response.data
                }
            ).catch(  // 定制请求失败以后的回调函数
                error => {
                    console.log(error)
                }
            )
        }
    })
</script>
</body>
</html>
View Code

 三、json

  1、简述:json是JavaScript Object Notation的首字母缩写,单词的意思是javascript对象表示法,也就是说json指的是类似于javascript对象的一种数据格式。

  2、作用:用于不同系统平台或不同编程语言之间传递数据。

  3、特征:

    ①在js中,json对象格式化之后就是json数据,json数据反序列化之后即json对象。

    ②json数据可以保存在.json后缀的文件中,一般一个文件只有一个json数据。

    ③json数据的属性不能是方法或者undefined,只能是,数值(整数,小数,布尔值) / 字符串 / 数组 以及 json数据,而原生的json对象可以包含方法和undefined。

    ④json数据内需要使用引号的部分必须都说是双引号,每个属性成员之间以逗号隔开,最后一个成员后面一定不能加逗号。

  4、json对象与json数据之间的转换:

    ①JSON.stringify(json对象) ===> json数据。

    ②JSON.parse(json数据) ===> json对象。

四、ajax

  1、简述:ajax,一般中文称之为:"阿贾克斯",是英文 “Async Javascript And Xml”的简写,译作:异步js和xml数据传输数据。

  2、作用:ajax可以让js代替浏览器向后端程序发送http请求,与后端通信,在用户不知道的情况下操作数据和信息,从而实现页面局部刷新数据或者无刷新更新数据,所以ajax在web开发中是十分常用的技术,主要用于操作后端提供的数据接口,从而实现网站的前后端分离。

  3、本质:ajax的原理就是通过实例化XMLHttpRequest对象,再用该对象内置的方法实现与后端的数据通信,所以无论是ajax还是axios,本质上都是对XMLHttpRequest对象操作的封装。

五、数据接口

  1、简述:也叫api接口,即服务端将数据操作的功能提供给客户端使用的url。

  2、流程:客户端通过向服务端提供的url发起请求来申请操作数据,实际工作中,大部分数据接口无需手写,可以通过框架生成。

六、同源策略

  1、简述:同源策略是浏览器为了保护用户信息安全的一种安全机制。

  2、原理:所谓的同源就是指,把通信的两个地址(如,服务端接口地址与客户端浏览器页面地址)之间进行比较,协议、域名(IP)和端口是否相同。不同源的客户端js在没有得到服务端的明确授权的情况下,浏览器会拦截服务端提供给客户端的响应。

  3、ajax和axios本质上都是js,所以都会受到同源策略的影响。

  4、同源策略拦截的关键字:Access-Control-Allow-Origin,一般如果请求后反馈这种异常,就是访问受限,被同源策略所拦截了。

七、跨域方案之CORS

  1、简述:CORS是一个W3C标准,全称是"跨域资源共享",它允许浏览器向跨源的后端服务器发出ajax请求,从而克服了ajax只能同源使用的限制,主要是依靠后端服务器在响应的数据中设置响应头再返回来实现的,所以CORS也可以称为服务端授权。

  2、其他跨域策略:jsonp和服务端代理。

    ①jsonp:核心是依靠script本身加载外部js文件来实现的,要想实现jsonp,同时也需要服务端的配合。

    ②服务端代理:越过浏览器,通过自己的服务端来请求目标服务端接口,因为自己的客户端与服务端处于同源,再直接请求数据即可。

  3、定向授权与开放授权,在响应行信息内设置如下内容,Access-Control-Allow-Origin: ajax所在的域名地址。

    ①若域名地址为指定的地址,那表示只允许该地址客户端的ajax跨域访问。

    ②若域名地址为*,则表示任意源的客户端ajax都可以跨域访问。

原文地址:https://www.cnblogs.com/caoyu080202201/p/13174078.html