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 相关文章推荐
解决AJAX中跨域访问出现'没有权限'的错误
Aug 20 Javascript
JS 控制CSS样式表
Aug 20 Javascript
JavaScript写的一个自定义弹出式对话框代码
Jan 17 Javascript
node.js中的dns.getServers方法使用说明
Dec 08 Javascript
简介alert()与console.log()的不同
Aug 26 Javascript
jQuery文字提示与图片提示效果实现方法
Jul 04 Javascript
关于javascript获取内联样式与嵌入式样式的实例
Jun 01 Javascript
laydate 显示结束时间不小于开始时间的实例
Aug 11 Javascript
4个顶级JavaScript高级文本编辑器
Oct 10 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
May 20 Javascript
Ant Design的可编辑Tree的实现操作
Oct 31 Javascript
js回到页面指定位置的三种方式
Dec 17 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
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
PHP学习散记_编码(json_encode 中文不显示)
2011/11/10 PHP
Javascript中数组sort和reverse用法分析
2014/12/30 Javascript
javascript的BOM汇总
2015/07/16 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
jQuery soColorPacker 网页拾色器
2016/06/22 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
angularjs 表单密码验证自定义指令实现代码
2016/10/27 Javascript
Node.js服务器开启Gzip压缩教程
2017/08/11 Javascript
Javascript 之封装(Package)
2018/09/14 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
Vue.js仿Select下拉框效果
2020/02/18 Javascript
[02:17]快乐加倍!DOTA2食人魔魔法师至宝+迎霜节活动上线
2019/12/22 DOTA
使用python开发vim插件及心得分享
2014/11/04 Python
Python的Socket编程过程中实现UDP端口复用的实例分享
2016/03/19 Python
python中获得当前目录和上级目录的实现方法
2017/10/12 Python
Flask实现图片的上传、下载及展示示例代码
2018/08/03 Python
python绘图模块matplotlib示例详解
2019/07/26 Python
django的model操作汇整详解
2019/07/26 Python
解决reload(sys)后print失效的问题
2020/04/25 Python
Python发送邮件实现基础解析
2020/08/14 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
输入N,打印N*N矩阵
2012/02/20 面试题
介绍一下EJB的分类及其各自的功能及应用
2016/08/23 面试题
酒店总经理欢迎词
2014/01/15 职场文书
中式面点餐厅创业计划书
2014/01/29 职场文书
小学生环保倡议书
2014/05/15 职场文书
意向书范本
2014/07/29 职场文书
投资合作意向书范本
2015/05/08 职场文书
办公经费申请报告
2015/05/15 职场文书
乡镇团委工作总结2015
2015/05/26 职场文书
导游词之青岛崂山
2019/12/27 职场文书
Redis安装使用RedisJSON模块的方法
2022/03/23 Redis
Win11 vmware不兼容怎么办?Win11与VMware虚拟机不兼容的解决方法
2023/01/09 数码科技