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 相关文章推荐
Code:loadScript( )加载js的功能函数
Feb 02 Javascript
jquery 插件 人性化的消息显示
Jan 21 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
Nov 07 Javascript
详细解密jsonp跨域请求
Apr 15 Javascript
每天一篇javascript学习小结(RegExp对象)
Nov 17 Javascript
从零学习node.js之搭建http服务器(二)
Feb 21 Javascript
vue的mixins属性详解
Mar 14 Javascript
Vue之mixin全局的用法详解
Aug 22 Javascript
对angularJs中ng-style动态改变样式的实例讲解
Sep 30 Javascript
基于three.js实现的3D粒子动效实例代码
Apr 09 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
May 16 Javascript
javascript实现5秒倒计时并跳转功能
Jun 20 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
在PHP3中实现SESSION的功能(三)
2006/10/09 PHP
推荐个功能齐全的发送PHP邮件类
2007/01/03 PHP
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
仿AS3实现PHP 事件机制实现代码
2011/01/27 PHP
php笔记之:数据类型与常量的使用分析
2013/05/14 PHP
php生成QRcode实例
2014/09/22 PHP
php获取url参数方法总结
2014/11/13 PHP
PHP多线程之内部多线程实例分析
2015/03/09 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
2016/09/01 PHP
PHP strcmp()和strcasecmp()的区别实例
2016/11/05 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
DWR实现模拟Google搜索效果实现原理及代码
2013/01/30 Javascript
jQuery 和 CSS 的文本特效插件集锦
2014/12/12 Javascript
JavaScript中setter和getter方法介绍
2016/07/11 Javascript
JavaScript利用闭包实现模块化
2017/01/13 Javascript
微信小程序利用co处理异步流程的方法教程
2017/05/20 Javascript
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
详解关于element el-button使用$attrs的一个注意要点
2018/11/09 Javascript
JS隐藏号码中间4位代码实例
2019/04/09 Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
2019/11/09 Javascript
JavaScript 俄罗斯方块游戏实现方法与代码解释
2020/04/08 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
2020/04/29 Javascript
Python实现的根据文件名查找数据文件功能示例
2018/05/02 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
2020/03/09 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
2020/03/30 Python
基于python实现音乐播放器代码实例
2020/07/01 Python
基于Python的一个自动录入表格的小程序
2020/08/05 Python
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
如果重写了对象的equals()方法,需要考虑什么
2014/11/02 面试题
2014年外联部工作总结
2014/11/17 职场文书
会议欢迎词范文
2015/01/27 职场文书
索赔员岗位职责
2015/02/15 职场文书
大学毕业生个人总结
2015/02/28 职场文书
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏