详解Vue中Axios封装API接口的思路及方法


Posted in Javascript onOctober 10, 2020

一、axios的封装

在vue项目中,和后台交互获取数据这块,我们通常使用的是axios库,它是基于promise的http库,可运行在浏览器端和node.js中。他有很多优秀的特性,例如拦截请求和响应、取消请求、转换json、客户端防御XSRF等。

在一个项目中我们如果要使用很多接口的话,总不能在每个页面都写满了.get()或者.post()吧?所以我们就要自己手动封装一个全局的Axios网络模块,这样的话就既方便也会使代码量不那么冗余。

安装

> npm install axios //这个就是安装axios的命令

首先我们要现在项目中安装Axios组件,这一步是一定的。

下载好了以后,就在项目的src文件里再新建两个目录,一个是http,一个是api。http目录是用来封装Axios的,api目录是用来统一来管理我们的接口的。

引入

第一步,先要在http.js里面引入axios

import axios from 'axios'

环境的切换

在我们开发项目的时候会有多种环境,就比如开发环境、测试环境、生产环境,使用axios.defaults.baseURL可以设置axios的默认请求地址。

//在开发环境中的测试 development
if(process.env.NODE_ENV == 'development') {
 axios.defaults.baseURL = 'http://120.53.31.103:84/'
}
//在生产环境中的测试 production
if(process.env.NODE_ENV == 'production') {
 axios.defaults.baseURL = 'https://wap.365msmk.com/'
}
//还有一种环境 debug

设置响应超时时间

通过axios.defaults.timeout设置默认的请求超时时间。如果超出了响应时间,就会告知用户当前请求超时,请刷新等等

//响应超时的时间
axios.defaults.timeout = 5000;

设置接口请求拦截

//接口请求拦截
axios.interceptors.request.use(
 config => {
 config.headers = { DeviceType : 'H5' } //设置响应头部
 return config
 }
)

使用promise返回axios请求的结果

post :

export function get(url,params){
 return new Promise((resolve,reject) => {
 axios.get(url,{
  params : params
 }).then(res => {
  resolve(res)
 }).catch(err => {
  reject(err)
 })
 })
}

get :

export function post(url,params){
 return new Promise((resolve,reject) => {
 axios.post(url,params)
 .then(res => {
  resolve(res.data)
 })
 .catch(err => {
  reject(err.data)
 })
 })
}

这个时候,http.js里面的就写好了。下面就要去api.js去获取api接口了。

现在是api.js中的内容

首先是要在api.js中引入刚刚封装好的axios

import {get,post} from '../http/http.js'
//get post 同时都要引入

然后就可以根据接口文档来进行数据的获取啦

//封装接口的方法
export function getAppIndex() {
 return get('api/app/recommend/appIndex')
}

export function getBanner() {
 return get('api/app/banner')
}

export function getTel() {
 return post('api/app/smsCode',{
  //这里用的是params传参,直接写{}就可,不用再声明params啦
  mobile : 18567391972,
  sms_type : 'login'
 })
}

再再然后,就可以去vue页面通过生命周期来获取数据啦。

再再再注意,这里不一定一定要使用async函数,这只是其中一种方法啦

async mounted() {
  // 明星讲师、精品课程等等
  let res = await getAppIndex();
  
  //添加到数组
  this.startList = res.data.data.list
  
  // 轮播图列表
  var banner = await getBanner();
  // console.log('轮播图'+ banner)
  if (banner.data.code == 200) {
  this.bannerList = banner.data.data
  }

  // 手机验证码接口
  let Tel = await getTel();
  // console.log('手机验证码'+ Tel)

  //
 },

到此这篇关于详解Vue中Axios封装API接口的思路及方法的文章就介绍到这了,更多相关Vue Axios封装API接口内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
Feb 02 Javascript
原生js实现可爱糖果数字时间特效
Dec 30 Javascript
手机端js和html5刮刮卡效果
Sep 29 Javascript
canvas实现图像截取功能
Feb 06 Javascript
Bootstrap显示与隐藏简单实现代码
Mar 06 Javascript
vuex state及mapState的基础用法详解
Apr 19 Javascript
微信小程序实现复选框效果
Dec 28 Javascript
javascript canvas实现简易时钟例子
Sep 05 Javascript
如何在面试中手写出javascript节流和防抖函数
Oct 22 Javascript
JavaScript实现缓动动画
Nov 25 Javascript
vue element实现表格合并行数据
Nov 30 Vue.js
JavaScript函数柯里化实现原理及过程
Dec 02 Javascript
在Vue中使用Echarts实例图的方法实例
Oct 10 #Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
Oct 09 #Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
Oct 09 #jQuery
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
Oct 09 #Javascript
vue实现选中效果
Oct 07 #Javascript
electron踩坑之dialog中的callback解决
Oct 06 #Javascript
electron踩坑之remote of undefined的解决
Oct 06 #Javascript
You might like
第十三节 对象串行化 [13]
2006/10/09 PHP
BBS(php & mysql)完整版(八)
2006/10/09 PHP
PHP连接MongoDB示例代码
2012/09/06 PHP
PHP Cookie的使用教程详解
2013/06/03 PHP
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
php中用memcached实现页面防刷新功能
2014/08/19 PHP
Mac系统下安装PHP Xdebug
2018/03/30 PHP
Javascript 浮点运算的问题分析与解决方法
2013/08/27 Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
2014/06/10 Javascript
ES6中Iterator与for..of..遍历用法分析
2017/03/31 Javascript
jquery获取链接地址和跳转详解(推荐)
2017/08/15 jQuery
vue实现图片滚动的示例代码(类似走马灯效果)
2018/03/03 Javascript
Vue中$refs的用法详解
2018/06/24 Javascript
ES6 更易于继承的类语法的使用
2019/02/11 Javascript
基于Vue实现的多条件筛选功能的详解(类似京东和淘宝功能)
2019/05/07 Javascript
详解NodeJs项目 CentOs linux服务器线上部署
2019/09/16 NodeJs
解决elementui表格操作列自适应列宽
2020/12/28 Javascript
小程序实现列表倒计时功能
2021/01/29 Javascript
Python实现的rsa加密算法详解
2018/01/24 Python
python获取指定字符串中重复模式最高的字符串方法
2018/06/29 Python
Python第三方库face_recognition在windows上的安装过程
2019/05/03 Python
Python多个装饰器的调用顺序实例解析
2020/05/22 Python
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
世界首屈一指的钓鱼用品商店:TackleDirect
2016/07/26 全球购物
EGO Shoes美国/加拿大:英国时髦鞋类品牌
2018/08/04 全球购物
新西兰网上购物,折扣店:BestDeals.co.nz
2019/03/20 全球购物
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
九年级化学教学反思
2014/01/28 职场文书
代办委托书怎样写
2014/04/08 职场文书
精神文明单位申报材料
2014/05/02 职场文书
干部作风建设年活动剖析材料
2014/10/23 职场文书
党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
有限责任公司股东合作协议书
2014/12/02 职场文书
外贸业务员岗位职责
2015/02/13 职场文书
学校运动会开幕词
2016/03/03 职场文书
python爬取豆瓣电影TOP250数据
2021/05/23 Python