vue中axios处理http发送请求的示例(Post和get)


Posted in Javascript onOctober 13, 2017

本文介绍了vue中axios处理http发送请求的示例(Post和get),分享给大家,具体如下:

axios中文文档

https://github.com/mzabriskie/axios#using-applicationx-www-form-urlencoded-format   axios文档

在处理http请求方面,已经不推荐使用vue-resource了,而是使用最新的axios,下面做一个简单的介绍。

安装

使用node

npm install axios

使用cdn

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

基本使用方法

get请求

// Make a request for a user with a given ID
axios.get('/user?ID=12345')
 .then(function (response) {
  console.log(response);
 })
 .catch(function (error) {
  console.log(error);
 });

// Optionally the request above could also be done as
axios.get('/user', {
  params: {
   ID: 12345
  }
 })
 .then(function (response) {
  console.log(response);
 })
 .catch(function (error) {
  console.log(error);
 });

Post请求

axios.post('/user', {
  firstName: 'Fred',
  lastName: 'Flintstone'
 })
 .then(function (response) {
  console.log(response);
 })
 .catch(function (error) {
  console.log(error);
 });

同时执行多个请求

function getUserAccount() {
 return axios.get('/user/12345');
}

function getUserPermissions() {
 return axios.get('/user/12345/permissions');
}

axios.all([getUserAccount(), getUserPermissions()])
 .then(axios.spread(function (acct, perms) {
  // Both requests are now complete
 }));

这个的使用方法其实和原生的ajax是一样的,一看就懂。

使用 application/x-www-urlencoded 形式的post请求:

var qs = require('qs');
 axios.post('/bbg/goods/get_goods_list_wechat', qs.stringify({"data": JSON.stringify({
  "isSingle": 1,
  "sbid": 13729792,
  "catalog3": 45908012,
  "offset": 0,
  "pageSize": 25
 })}), {
  headers: {
   "BBG-Key": "ab9ef204-3253-49d4-b229-3cc2383480a6",
  }
 })
 .then(function (response) {
  // if (response.data.code == 626) {
   console.log(response);
  // }
 }).catch(function (error) {
  console.log(error);
 });

具体使用参考文档: https://github.com/mzabriskie/axios#using-applicationx-www-form-urlencoded-format

注意: 对于post请求,一般情况下,第一个参数是url,第二个参数是要发送的请求体的数据,第三个参数是对请求的配置。

另外:axios默认是application/json格式的,如果不适用 qs.stringify 这种形式, 即使添加了请求头 最后的content-type的形式还是 json 的。

对于post请求,我们也可以使用下面的jquery的ajax来实现:

$.ajax({
     url:'api/bbg/goods/get_goods_list_wechat',
     data:{
      'data': JSON.stringify({
            "isSingle": 1,
            "sbid": 13729792,
            "catalog3": 45908012,
            "offset": 0,
            "pageSize": 25
          })    
     },  
     beforeSend: function(request) {
      request.setRequestHeader("BBG-Key", "ab9ef204-3253-49d4-b229-3cc2383480a6");
     }, 
     type:'post', 
     dataType:'json', 
     success:function(data){   
      console.log(data);
     },
     error: function (error) {
      console.log(err);
     },
     complete: function () {

     }
    });

显然,通过比较,可以发现,jquery的请求形式更简单一些,且jqury默认的数据格式就是 application/x-www-urlencoded ,从这方面来讲会更加方便一些。

另外,对于两个同样的请求,即使都请求成功了,但是两者请求得到的结果也是不一样的,如下:

vue中axios处理http发送请求的示例(Post和get)

不难看到: 使用axios返回的结果会比jquery的ajax返回的结构(实际的结果)多包装了一层,包括相关的config、 headers、request等。

对于get请求, 我个人还是推荐使用axios.get()的形式,如下所示:

axios.get('/bbg/shop/get_classify', {
  params: {
   sid: 13729792
  },
  headers: {
   "BBG-Key": "ab9ef204-3253-49d4-b229-3cc2383480a6"
  }
 })
 .then(function (response) {
  if (response.data.code == 130) {
   items = response.data.data;
   store.commit('update', items);
   console.log(items);
  }
  console.log(response.data.code);
 }).catch(function (error) {
  console.log(error);
  console.log(this);
 });

即第一个参数是:url, 第二个参数就是一个配置对象,我们可以在配置对象中设置 params 来传递参数。

个人理解为什么get没有第二个参数作为传递的查询字符串,而post有第二个参数作为post的数据。

因为get可以没有查询字符串,也可以get请求,但是post必须要有post的数据,要不然就没有使用post的必要了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS OOP包机制,类创建的方法定义
Nov 02 Javascript
jquery的trigger和triggerHandler的区别示例介绍
Apr 20 Javascript
jquery实现红色竖向多级向右展开的导航菜单效果
Aug 31 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
Jan 21 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
Jun 07 Javascript
关于JS变量和作用域详解
Jul 28 Javascript
JavaScript实现垂直滚动条效果
Jan 18 Javascript
利用types增强vscode中js代码提示功能详解
Jul 07 Javascript
安装Node.js并启动本地服务的操作教程
May 12 Javascript
基于Vue2x的图片预览插件的示例代码
May 14 Javascript
如何在JavaScript中优雅的提取循环内数据详解
Mar 04 Javascript
ElementUI实现el-form表单重置功能按钮
Jul 21 Javascript
JavaScript实现随机数生成器(去重)
Oct 13 #Javascript
AngualrJs清除定时器遇到的坑
Oct 13 #Javascript
React Native中Navigator的使用方法示例
Oct 13 #Javascript
React Native中TabBarIOS的简单使用方法示例
Oct 13 #Javascript
ReactJS实现表单的单选多选和反选的示例
Oct 13 #Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
Oct 13 #Javascript
捕获未处理的Promise错误方法
Oct 13 #Javascript
You might like
ASP知识讲座四
2006/10/09 PHP
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
PHPUnit + Laravel单元测试常用技能
2019/11/06 PHP
使用js对select动态添加和删除OPTION示例代码
2013/08/12 Javascript
angularjs实现与服务器交互分享
2014/06/24 Javascript
js阻止事件追加的具体实现
2014/10/15 Javascript
jQuery中last()方法用法实例
2015/01/06 Javascript
jQuery实现DIV层收缩展开的方法
2015/02/27 Javascript
浅谈setTimeout 与 setInterval
2015/06/23 Javascript
基于jQuery仿淘宝产品图片放大镜特效
2020/10/19 Javascript
两种方法解决javascript url post 特殊字符转义 + &amp; #
2016/04/13 Javascript
Vue+axios 实现http拦截及路由拦截实例
2017/04/25 Javascript
使用Bootstrap和Vue实现用户信息的编辑删除功能
2017/10/25 Javascript
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
php 解压zip压缩包内容到指定目录的实例
2018/01/23 Javascript
Vue下滚动到页面底部无限加载数据的示例代码
2018/04/22 Javascript
详解react内联样式使用webpack将px转rem
2018/09/13 Javascript
JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】
2019/02/22 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
2019/06/21 Javascript
js实现随机圆与矩形功能
2020/10/29 Javascript
[00:48]完美“圣”典2016风云人物:xiao8宣传片
2016/11/30 DOTA
python笔记(2)
2012/10/24 Python
深入浅析Python字符编码
2015/11/12 Python
python图片验证码识别最新模块muggle_ocr的示例代码
2020/07/03 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
2021/02/25 Python
纯CSS实现右侧底部悬浮效果(悬浮QQ、微信、微博、邮箱等联系方式)
2015/04/24 HTML / CSS
美国最大的香水出口:FragranceX.com
2017/11/04 全球购物
新媒传信软件测试面试题
2013/02/24 面试题
临床医学应届生求职信
2013/11/06 职场文书
生产车间标语
2014/06/11 职场文书
尊老爱幼演讲稿
2014/09/04 职场文书
副总经理党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/06 职场文书
计算机实训报告范文
2014/11/05 职场文书
上课讲话检讨书范文
2015/05/07 职场文书
党员公开承诺书2016
2016/03/24 职场文书