second_axios_组件化开发

 

1.axios实现数据请求

    // 发送get请求
    // 参数1: 必填,字符串,请求的数据接口的url地址,例如请求地址:http://www.baidu.com?id=200
    // 参数2:可选,json对象,要提供给数据接口的参数
    // 参数3:可选,json对象,请求头信息
    axios.get('服务器的资源地址',{ // http://www.baidu.com
        params:{
            参数名:'参数值', // id: 200,
        }
    
    }).then(function (response) { // 请求成功以后的回调函数
            console.log("请求成功");
            console.log(response);
    
    }).catch(function (error) {   // 请求失败以后的回调函数
            console.log("请求失败");
            console.log(error.response);
    });

    // 发送post请求,参数和使用和axios.get()一样。
    // 参数1: 必填,字符串,请求的数据接口的url地址
    // 参数2:必填,json对象,要提供给数据接口的参数,如果没有参数,则必须使用{}
    // 参数3:可选,json对象,请求头信息
    axios.post('服务器的资源地址',{
        username: 'xiaoming',
        password: '123456'
    },{
        responseData:"json",
    })
    .then(function (response) { // 请求成功以后的回调函数
      console.log(response);
    })
    .catch(function (error) {   // 请求失败以后的回调函数
      console.log(error);
    });

    
    // b'firstName=Fred&lastName=Flintstone'

 

2.json数据的语法

// json数据的数组格式:
["tom",18,"programmer"]
1. json文件的后缀是.json
2. json文件一般保存一个单一的json数据
3. json数据的属性不能是方法或者undefined,属性值只能:数值、字符串、json和数组
4. json数据只使用双引号、每一个属性成员之间使用逗号隔开,并且最后一个成员没有逗号。
   {
      "name":"小明",
      "age":200,
      "fav":["code","eat","swim","read"],
      "son":{
        "name":"小小明",
        "age":100
      }
    }
多行js用反引号``

 

3.ajax

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

ajax的作用: ajax可以让js代替浏览器向后端程序发送http请求,
与后端通信,在用户不知道的情况下操作数据和信息,从而实现页
面局部刷新数据/无刷新更新数据。

所以开发中ajax是很常用的技术,主要用于操作后端提供的`数据接口`,
从而实现网站的`前后端分离`。

ajax技术的原理是实例化js的XMLHttpRequest对象,使用此对象提
供的内置方法就可以与后端进行数据通信。

 

4.数据接口

数据接口,也叫api接口,表示`后端提供`操作数据/功能的url地址给客户端使用。

客户端通过发起请求向服务端提供的url地址申请操作数据【操作一般:增删查改】

同时在工作中,大部分数据接口都不是手写,而是通过函数库/框架来生成。

 

5.同源策略

同源策略,是浏览器为了保护用户信息安全的一种安全机制。
所谓的同源就是指代通信的两个地址(例如服务端接口地址与
浏览器客户端页面地址)之间比较,是否协议、域名(IP)和
端口相同。不同源的客户端脚本[javascript]在没有明确授权的
情况下,没有权限读写对方信息。

ajax本质上还是javascript,是运行在浏览器中的脚本语言,
所以会被受到浏览器的同源策略所限制。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/vue.js"></script>
    <script src="js/axios.js"></script>
</head>
<body>
    <div id="app">
        <button @click="get_music">点击获取天气</button>
    </div>
    <script>
        let vm = new Vue({
            el:"#app",
            data:{},
            methods:{
                get_music(){
                    axios.get("http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.search.catalogSug&query=我的中国心")
                        .then(response=>{
                            console.log(response);

                        }).catch(error=>{
                            console.log(error.response)
                    });
                }
            }
        })
    </script>
</body>
</html>

 

Access to XMLHttpRequest at 'http://tingapi.ting.baidu.com
/v1/restserver/ting?method=baidu.ting.search.catalogSug&
query=%E6%88%91%E7%9A%84%E4%B8%AD%E5%9B%BD%E5%BF%83' from
origin 'http://localhost:63342' has been blocked by CORS
policy: No 'Access-Control-Allow-Origin' header is present
on the requested resource. 上面错误,关键词:Access
-Control-Allow-Origin 只要出现这个关键词,就是访问受限。出现同源策略的拦截问题。

 

6.ajax跨域(跨源)方案之CORS

django的视图

def post(request):
​    response = new Response()
​    response .set_header("Access-Control-Allow-Origin","*")
​    return response;


// 在响应行信息里面设置以下内容:
Access-Control-Allow-Origin: ajax所在的域名地址

Access-Control-Allow-Origin: www.oldboy.cn  # 表示只允许www.oldboy.cn域名的客户端的ajax跨域访问

// * 表示任意源,表示允许任意源下的客户端的ajax都可以访问当前服务端信息
Access-Control-Allow-Origin: *

 

 

0. 同源策略:浏览器的一种保护用户数据的一种安全机制。
   浏览器会限制脚本语法不能跨源访问其他源的数据地址。
   同源:判断两个通信的地址之间,是否协议,域名[IP],端口一致。
   
   ajax:  http://127.0.0.1/index.html
   api数据接口:  http://localhost/index
   
   这两个是同源么?不是同源的。是否同源的判断依据不会根据电脑来判断,
而是通过协议、域名、端口的字符串是否来判断。
1. ajax默认情况下会受到同源策略的影响,一旦受到影响会报错误如下: No 'Access-Control-Allow-Origin' header is present
on the requested resource
2. 解决ajax只能同源访问数据接口的方式: 1. 在服务端的响应行中设置: Access-Control-Allow-Origin: 允许访问的域名地址 2. jsonp 3. 是否服务端代理 思路:通过python来请求对应的服务器接口,获取到数据以后,

 

7.组件补充

Node.js是一个新的后端(后台)语言,它的语法和JavaScript类似,
所以可以说它是属于前端的后端语言,后端语言和前端语言的区别:

- 运行环境:后端语言一般运行在服务器端,前端语言运
行在客户端的浏览器上
- 功能:后端语言可以操作文件,可以读写数据库,前端语
言不能操作文件,不能读写数据库。

在安装node.js完成后,在node.js中会同时帮我们安装
一个npm包管理器npm。我们可以借助npm命令来安装node.js的
包。这个工具相当于python的pip管理器。

使用Vue-CLI初始化创建项目
生成项目目录
使用vue自动化工具可以快速搭建单页应用项目目录。
该工具为现代化的前端开发工作流提供了开箱即用的构建配置。
只需几分钟即可创建并启动一个带热重载、保存时静态检查以及可用于生产环境的构建配置的项目

 

posted @ 2019-04-24 15:27  pythonernoob  阅读(111)  评论(0)    收藏  举报