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编程起步(第四课)
Feb 27 Javascript
Mootools 1.2教程 输入过滤第一部分(数字)
Sep 15 Javascript
javascript 闭包疑问
Dec 30 Javascript
jQuery中first()方法用法实例
Jan 06 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
Feb 14 Javascript
Vue开发过程中遇到的疑惑知识点总结
Jan 20 Javascript
mui上拉加载更多下拉刷新数据的封装过程
Nov 03 Javascript
bootstrap中selectpicker下拉框使用方法实例
Mar 22 Javascript
javaScript强制保留两位小数的输入数校验和小数保留问题
May 09 Javascript
Bootstrap-table使用footerFormatter做统计列功能
Sep 07 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
Apr 22 Javascript
Nuxt配置Element-UI按需引入的操作方法
Jul 06 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
让你同时上传 1000 个文件 (一)
2006/10/09 PHP
PHP为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
php+js实现异步图片上传实例分享
2014/06/02 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
PHP设计模式之简单投诉页面实例
2016/02/24 PHP
PHP匿名函数和use子句用法实例
2016/03/16 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
2019/10/15 PHP
js本身的局限性 别让javascript做太多事
2010/03/23 Javascript
使用jquery与图片美化checkbox和radio控件的代码(打包下载)
2010/11/11 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
2013/04/09 Javascript
解决jquery1.9不支持browser对象的问题
2013/11/13 Javascript
Bootstrap源码解读导航(6)
2016/12/23 Javascript
基于JS实现限时抢购倒计时间表代码
2017/05/09 Javascript
利用Vue.js实现求职在线之职位查询功能
2017/07/03 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
2018/07/05 Javascript
python通过索引遍历列表的方法
2015/05/04 Python
TensorFlow损失函数专题详解
2018/04/26 Python
使用Python获取并处理IP的类型及格式方法
2018/11/01 Python
Pyinstaller 打包exe教程及问题解决
2019/08/16 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
python实现文件分片上传的接口自动化
2020/11/19 Python
纯CSS3制作页面切换效果的实例代码
2019/05/30 HTML / CSS
HTML5 canvas基本绘图之绘制矩形
2016/06/27 HTML / CSS
html5仿支付宝密码框的实现代码
2017/09/06 HTML / CSS
让IE9以下版本的浏览器兼容HTML5的方法
2014/03/12 HTML / CSS
Topshop法国官网:英国快速时尚品牌
2018/04/08 全球购物
美国高档帽子网上商店:Hats.com
2018/08/09 全球购物
群众路线教育实践活动方案
2014/02/02 职场文书
学校欢迎标语
2014/06/18 职场文书
机关副主任个人四风问题整改措施
2014/09/26 职场文书
班主任师德师风自我剖析材料
2014/10/02 职场文书
雾霾停课通知
2015/04/24 职场文书
小学校长开学致辞
2015/07/29 职场文书
Android自定义ScrollView实现阻尼回弹
2022/04/01 Java/Android
利用Java连接Hadoop进行编程
2022/06/28 Java/Android
Java 中的 Lambda List 转 Map 的多种方法详解
2022/07/07 Java/Android