ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Vue学习笔记【16】——vue-resource 实现 get, post, jsonp请求

2019-11-22 09:56:37  阅读:203  来源: 互联网

标签:vue http 请求 16 res JSONP resource post 客户端


除了 vue-resource 之外,还可以使用 axios 的第三方包实现实现数据的请求

  1. 之前的学习中,如何发起数据请求?原生、jQuery,需要操作DOM

  2. 常见的数据请求类型? get post jsonp

  3. 测试的URL请求资源地址:

  1. JSONP的实现原理

  • 由于浏览器的安全性限制,不允许AJAX访问 协议不同、域名不同、端口号不同的 数据接口,浏览器认为这种访问不安全;

  • 可以通过动态创建script标签的形式,把script标签的src属性,指向数据接口的地址,因为script标签不存在跨域限制,这种数据获取方式,称作JSONP(注意:根据JSONP的实现原理,知晓,JSONP只支持Get请求);

  • 具体实现过程:

  • 先在客户端定义一个回调方法,预定义对数据的操作;

  • 再把这个回调方法的名称,通过URL传参的形式,提交到服务器的数据接口;

  • 服务器数据接口组织好要发送给客户端的数据,再拿着客户端传递过来的回调方法名称,拼接出一个调用这个方法的字符串,发送给客户端去解析执行;

  • 客户端拿到服务器返回的字符串之后,当作Script脚本去解析执行,这样就能够拿到JSONP的数据了;

  • 带大家通过 Node.js ,来手动实现一个JSONP的请求例子;

const http = require('http');
    // 导入解析 URL 地址的核心模块
    const urlModule = require('url');

    const server = http.createServer();
    // 监听 服务器的 request 请求事件,处理每个请求
    server.on('request', (req, res) => {
      const url = req.url;

      // 解析客户端请求的URL地址
      var info = urlModule.parse(url, true);

      // 如果请求的 URL 地址是 /getjsonp ,则表示要获取JSONP类型的数据
      if (info.pathname === '/getjsonp') {
        // 获取客户端指定的回调函数的名称
        var cbName = info.query.callback;
        // 手动拼接要返回给客户端的数据对象
        var data = {
          name: 'zs',
          age: 22,
          gender: '男',
          hobby: ['吃饭', '睡觉', '运动']
        }
        // 拼接出一个方法的调用,在调用这个方法的时候,把要发送给客户端的数据,序列化为字符串,作为参数传递给这个调用的方法:
        var result = `${cbName}(${JSON.stringify(data)})`;
        // 将拼接好的方法的调用,返回给客户端去解析执行
        res.end(result);
      } else {
        res.end('404');
      }
    });

    server.listen(3000, () => {
      console.log('server running at http://127.0.0.1:3000');
    });
  1. vue-resource 的配置步骤:

  • 直接在页面中,通过script标签,引入 vue-resource 的脚本文件;

  • 注意:引用的先后顺序是:先引用 Vue 的脚本文件,再引用 vue-resource 的脚本文件;

  1. 发送get请求:

getInfo() { // get 方式获取数据
  this.$http.get('http://127.0.0.1:8899/api/getlunbo').then(res => {
    console.log(res.body);
  })
}
  1. 发送post请求:

 postInfo() {
   var url = 'http://127.0.0.1:8899/api/post';
   // post 方法接收三个参数:
   // 参数1: 要请求的URL地址
   // 参数2: 要发送的数据对象
   // 参数3: 指定post提交的编码类型为 application/x-www-form-urlencoded
   this.$http.post(url, { name: 'zs' }, { emulateJSON: true }).then(res => {
     console.log(res.body);
   });
 }
  1. 发送JSONP请求获取数据:

 jsonpInfo() { // JSONP形式从服务器获取数据
   var url = 'http://127.0.0.1:8899/api/jsonp';
   this.$http.jsonp(url).then(res => {
     console.log(res.body);
   });
 }

 

标签:vue,http,请求,16,res,JSONP,resource,post,客户端
来源: https://www.cnblogs.com/superjishere/p/11909798.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有