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 保存数组到Cookie的代码
Apr 14 Javascript
Javascript 面向对象 继承
May 13 Javascript
jquery等宽输出文字插件使用介绍
Sep 18 Javascript
利用jq让你的div居中的好方法分享
Nov 21 Javascript
js实现的复制兼容chrome和IE
Apr 03 Javascript
js中将String转换为number以便比较
Jul 08 Javascript
JavaScript实现模仿桌面窗口的方法
Jul 18 Javascript
Grunt入门教程(自动任务运行器)
Aug 06 Javascript
原生JavaScript实现Ajax的方法
Apr 07 Javascript
让你彻底掌握es6 Promise的八段代码
Jul 26 Javascript
vue 详情跳转至列表页实现列表页缓存
Mar 27 Javascript
一篇超完整的Vue新手入门指导教程
Nov 18 Vue.js
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获取谷歌PR值算法,附上php查询PR值代码示例
2011/12/25 PHP
浅谈discuz密码加密的方式
2014/05/22 PHP
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
转义字符(\)对JavaScript中JSON.parse的影响概述
2013/07/17 Javascript
分享Javascript中最常用的55个经典小技巧
2013/11/29 Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
2014/11/17 Javascript
JQuery遍历DOM节点的方法
2015/06/11 Javascript
分享15个大家都熟知的jquery小技巧
2015/12/02 Javascript
用原生js做单页应用
2017/01/17 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
2017/05/20 jQuery
详解vue 实例方法和数据
2017/10/23 Javascript
JavaScript模块模式实例详解
2017/10/25 Javascript
vue自定义指令之面板拖拽的实现
2019/04/14 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
2019/09/17 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
vue点击标签切换选中及互相排斥操作
2020/07/17 Javascript
javascript实现倒计时提示框
2021/03/02 Javascript
[48:24]完美世界DOTA2联赛循环赛LBZS vs Forest 第一场 10月30日
2020/10/31 DOTA
跟老齐学Python之眼花缭乱的运算符
2014/09/14 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
基于DataFrame筛选数据与loc的用法详解
2018/05/18 Python
简单了解python反射机制的一些知识
2019/07/13 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
Python 分布式缓存之Reids数据类型操作详解
2020/06/24 Python
阿迪达斯德国官方网站:adidas德国
2017/07/12 全球购物
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
法国二手MacBook销售网站:Okamac
2019/03/18 全球购物
应届生简历中的自我评价
2014/01/13 职场文书
小班秋游活动方案
2014/02/22 职场文书
cf战队收人广告词
2014/03/14 职场文书
新闻传媒系求职信范文
2014/04/19 职场文书
组工干部对照检查材料
2014/08/25 职场文书
小学六年级毕业感言
2015/07/30 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书
导游词之蜀山胜景瓦屋山
2019/11/29 职场文书