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 学习笔记 Black.Caffeine 09.11.28
Nov 30 Javascript
IE8下String的Trim()方法失效的解决方法
Nov 08 Javascript
使用jquery动态加载js文件的方法
Dec 24 Javascript
百度地图API之本地搜索与范围搜索
Jul 30 Javascript
javascript表单处理具体实现代码(表单、链接、按钮)
May 07 Javascript
jquery select2的使用心得(推荐)
Dec 04 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
Jun 19 Javascript
karma+webpack搭建vue单元测试环境的方法示例
May 24 Javascript
讲解vue-router之什么是编程式路由
May 28 Javascript
详解如何搭建mpvue框架搭配vant组件库的小程序项目
May 16 Javascript
Vue 图片压缩并上传至服务器功能
Jan 15 Javascript
AJAX学习笔记
May 18 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
一个简单的网页密码登陆php代码
2012/07/17 PHP
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
PHP 前加at符合@的作用解析
2015/07/31 PHP
js可突破windows弹退效果代码
2008/08/09 Javascript
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
理解Javascript_12_执行模型浅析
2010/10/18 Javascript
javascript 主动派发事件总结
2011/08/09 Javascript
js限制input标签中只能输入中文
2015/06/26 Javascript
js判断出两个字符串最大子串的函数实现方法
2016/11/01 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
浅谈pc端rem字体设置的问题
2017/08/03 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
2019/02/28 Javascript
JavaScript中callee和caller的区别与用法实例分析
2019/06/28 Javascript
layui文件上传控件带更改后数据传值的方法
2019/09/23 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
2019/11/29 Javascript
原生js实现弹窗消息动画
2020/11/20 Javascript
[06:38]DOTA2怒掀电竞风暴 2013Chinajoy
2013/07/27 DOTA
[48:21]Mski vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python编程中的异常处理教程
2015/08/21 Python
Python 中 list 的各项操作技巧
2017/04/13 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
Python 读取WAV音频文件 画频谱的实例
2020/03/14 Python
python中threading开启关闭线程操作
2020/05/02 Python
python3中确保枚举值代码分析
2020/12/02 Python
linux面试题参考答案(6)
2014/08/29 面试题
市场营销职业生涯规划书范文
2014/01/12 职场文书
一年级语文教学反思
2014/02/13 职场文书
学雷锋志愿服务月活动总结
2014/03/09 职场文书
优乐美广告词
2014/03/14 职场文书
投标承诺书范本
2014/03/27 职场文书
应届生求职自荐信
2014/07/04 职场文书
Html5通过数据流方式播放视频的实现
2021/04/27 HTML / CSS
用Python编写简单的gRPC服务的详细过程
2021/07/04 Python
Tomcat starup.bat 脚本实现开机自启动
2022/04/20 Servers
python运行脚本文件的三种方法实例
2022/06/25 Python