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 相关文章推荐
Javascript----文件操作
Jan 18 Javascript
犀利的js 函数集合
Jun 11 Javascript
论坛里点击别人帖子下面的回复,回复标题变成“回复 24# 的帖子”
Jun 14 Javascript
高效的表格行背景隔行变色及选定高亮的JS代码
Dec 04 Javascript
Jquery中ajax方法data参数的用法小结
Feb 12 Javascript
javascript字符串与数组转换汇总
May 26 Javascript
再JavaScript的jQuery库中编写动画效果的指南
Aug 13 Javascript
jquery动态创建div与input的实例代码
Oct 12 Javascript
js和jquery中获取非行间样式
May 05 jQuery
微信小程序官方动态自定义底部tabBar的例子
Sep 04 Javascript
微信小程序使用蓝牙小插件
Sep 23 Javascript
解决Vue在Tomcat8下部署页面不加载的问题
Nov 12 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
解析coreseek for sphinx的使用
2013/06/21 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
2016/01/07 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
深入理解PHP类的自动载入机制
2016/09/16 PHP
php 截取GBK文档某个位置开始的n个字符方法
2017/03/08 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
jquery 新手学习常见问题解决方法
2010/04/18 Javascript
jquery-easyui关闭tab自动切换到前一个tab
2010/07/29 Javascript
jQuery循环滚动展示代码 可应用到文字和图片上
2012/05/11 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
javascript中checkbox使用方法实例演示
2015/11/19 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
javascript中的面向对象
2017/03/30 Javascript
基于Vue制作组织架构树组件
2017/12/06 Javascript
electron中使用bootstrap的示例代码
2018/11/06 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
Vue中点击active并第一个默认选中功能的实现
2020/02/24 Javascript
vue页面更新patch的实现示例
2020/03/25 Javascript
Python使用urllib模块的urlopen超时问题解决方法
2014/11/08 Python
详解python中index()、find()方法
2019/08/29 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
2020/10/27 Python
关于django python manage.py startapp 应用名出错异常原因解析
2020/12/15 Python
pandas 按日期范围筛选数据的实现
2021/02/20 Python
SmartBuyGlasses中国:唯视良品(销售名牌太阳镜、墨镜和眼镜框)
2017/07/03 全球购物
斯凯奇新西兰官网:SKECHERS新西兰
2018/02/22 全球购物
英国珠宝钟表和家居礼品精品店:David Shuttle
2018/02/24 全球购物
文秘专业应届生求职信范文
2013/11/14 职场文书
毕业生自荐信
2013/12/14 职场文书
公司同意接收函
2014/01/13 职场文书
廉洁自律演讲稿
2014/05/22 职场文书
违纪检讨书
2015/01/27 职场文书
办公室岗位职责
2015/02/04 职场文书
2015年学校禁毒工作总结
2015/05/27 职场文书
高效课堂教学反思
2016/02/24 职场文书
Python深度学习之Pytorch初步使用
2021/05/20 Python
一起来看看Vue的核心原理剖析
2022/03/24 Vue.js