JS中封装axios来管控api的2种方式


Posted in Javascript onSeptember 11, 2019

前言:我们在开发项目的时候,往往要处理大量的接口.并且在测试环境 开发环境 生产环境使用的接口baseurl都不一样 这时候如果在开发环境完成之后切换每一个接口的baseurl会变的非常的麻烦,(要去每一个发出请求的页面都要去修改地址)

所以为了更好的管控这些api,我们需要自己封装一个axios定义统一的接口baseurl 这样在环境的切换的时候更好的管控和修改.话不多说上代码!!!

 自己创建一个api文件夹 即可

import axios from 'axios'
  为了处理java字符串问题
import qs from 'qs' 
创建一个axios实例 在其中设置超时时间和响应头
const http = axios.create({
  baseURL: process.env.VUE_APP_MOCK_DATA_URL, // api 的 base_url
  timeout: 3000,
  headers: {
    'Content-Type': 'application/json;charset=utf-8'
  }
})
/**
* 请求拦截 可以在发送请求的时候加上判断信息
*/
http.interceptors.request.use(config => {
 *****
  return config
}, error => {
  return Promise.reject(error)
})
/**
* 响应拦截 可以对传回的数据做出判断 
*/
http.interceptors.response.use(response => {
  return response
}, error => {
  return Promise.reject(error)
})

将这个封装好的axios 暴露出去

export default http

在main.js中引入并且挂载到原型对象上

import http from '@/api/api.js'
 Vue.prototype.$http = http

第一种封装的方式一般就是对于api数量不是特别多的时候 复杂层级不高的情况 这样封装完全可以

第二种方式

'use strict'

同样的也需要引入这两个包

import axios from 'axios'
import qs from 'qs'

// 设置拦截器 默认请求url得前缀
// axios.defaults.baseURL = process.env.NODE_ENV === 'production' ? '/custInfo' :
//  '127.0.0.1:8888', 
//  axios.interceptors.request.use(config => {
//   // // loading
//   return config
//  }, error => {
//   return Promise.reject(error)
//  })
// 
// axios.interceptors.response.use(response => {
//  return response
// }, error => {
//  return Promise.resolve(error.response)
// })

export default {
 post(url, data) {
  return new Promise((resolve, reject) => {
   axios({
    method: 'post',
    url,
    // qs这个插件主要是为了解决java后台接受到得参数必须是字符串
    data: qs.stringify(data),
    headers: {
     'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
    }
   }).then((res) => {
    resolve(res)
   }).catch((error) => {
    reject(error)
   })
  })
 },
 get (url, params) {
  return new Promise((resolve, reject) => {
   axios({
    method: 'get',
    url,
    params, // get 请求时带的参数
   }).then((res) => {
    resolve(res)
   }).catch((error) => {
    reject(error)
   })
  })
 }
}

这种封装好之后,就可以在创建一个文件夹  然后把所有的接口都写在一起

getCustValue(params) {
    return $http.post('/custOverview/getCustValue', params);
  },
  getTacntrt(params) {
    return $http.get('/dict/getTacntrtMgmtMsgMonth', params);
  },
  query(params) {
    return $http.post('/indexManager/queryVipFlowCount', params);
  }

然后一一列举 就可以非常好的梳理api 

总结

以上所述是小编给大家介绍的JS中封装axios来管控api的2种方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
JavaScript的面向对象方法以及差别
Mar 31 Javascript
jQuery实现切换页面布局使用介绍
Oct 09 Javascript
关于JS字符串函数String.replace()
Apr 07 Javascript
Webwork 实现文件上传下载代码详解
Feb 02 Javascript
location.hash保存页面状态的技巧
Apr 28 Javascript
如何学JavaScript?前辈的经验之谈
Dec 28 Javascript
微信小程序 http请求的session管理
Jun 07 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
Jan 18 Javascript
详解Vue webapp项目通过HBulider打包原生APP
Jun 29 Javascript
微信小程序实现签到功能
Oct 31 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
Jan 08 jQuery
利用js实现简易红绿灯
Oct 15 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
Sep 11 #Javascript
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
Sep 11 #Javascript
如何实现一个简易版的vuex持久化工具
Sep 11 #Javascript
浅谈layer弹出层按钮颜色修改方法
Sep 11 #Javascript
layui实现鼠标移动到单元格上显示数据的方法
Sep 11 #Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
Sep 11 #Javascript
layui操作列按钮个数和文字颜色的判断实例
Sep 11 #Javascript
You might like
php.ini save_handler 修改不生效的解决办法
2014/07/22 PHP
Laravel 5.0 发布 新版本特性详解
2015/02/10 PHP
PHP微信开发用Cache 解决数据缓存
2016/07/11 PHP
JS 拼图游戏 面向对象,注释完整。
2009/06/18 Javascript
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
页面调用单个swf文件,嵌套出多个方法。
2011/11/21 Javascript
js简单实现根据身份证号码识别性别年龄生日
2013/11/29 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
zTree插件下拉树使用入门教程
2016/04/11 Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
2016/11/24 Javascript
详解vue嵌套路由-params传递参数
2017/05/23 Javascript
基于Two.js实现星球环绕动画效果的示例
2017/11/06 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
详解JavaScript 为什么要有 Symbol 类型?
2019/04/03 Javascript
在VUE中使用lodash的debounce和throttle操作
2020/11/09 Javascript
[53:10]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs VG 第一场
2018/04/11 DOTA
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
Python实现栈的方法
2015/05/26 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
python控制windows剪贴板,向剪贴板中写入图片的实例
2018/05/31 Python
Python 访问限制 private public的详细介绍
2018/10/16 Python
python设定并获取socket超时时间的方法
2019/01/12 Python
PyCharm在新窗口打开项目的方法
2019/01/17 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
Reebok俄罗斯官方网上商店:购买锐步运动服装和鞋子
2016/09/26 全球购物
迪卡侬英国官网:Decathlon英国
2017/04/08 全球购物
银河香水:Galaxy Perfume
2019/03/25 全球购物
英国哈罗德园艺:Harrod Horticultural
2020/03/31 全球购物
中职三好学生事迹材料
2014/08/24 职场文书
2014年绿化工作总结
2014/12/09 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
亮剑观后感600字
2015/06/05 职场文书
Pandas搭配lambda组合使用详解
2022/01/22 Python