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 相关文章推荐
ASP.NET jQuery 实例12 通过使用jQuery validation插件简单实现用户注册页面验证功能
Feb 03 Javascript
js中的scroll和offset 使用比较的实例与分析
Sep 29 Javascript
javascript 实现子父窗体互相传值的简单实例
Feb 17 Javascript
js实现带按钮的上下滚动效果
May 12 Javascript
JS+CSS实现简单的二级下拉导航菜单效果
Sep 21 Javascript
javascript实现延时显示提示框特效代码
Apr 27 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
Oct 25 Javascript
利用Angularjs中模块ui-route管理状态的方法
Dec 27 Javascript
jQuery实现元素的插入
Feb 27 Javascript
详解Angular 自定义结构指令
Jun 21 Javascript
React如何实现浏览器打印部分内容详析
May 19 Javascript
jquery弹窗时禁止body滚动条滚动的例子
Sep 21 jQuery
浅谈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
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
linux下编译安装memcached服务
2014/08/03 PHP
php往mysql中批量插入数据实例教程
2018/12/12 PHP
一个XML格式数据转换为图表的例子
2010/02/09 Javascript
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
基于jquery的高性能td和input切换并可修改内容实现代码
2011/01/09 Javascript
IE与Firefox在JavaScript上的7个不同句法分享
2011/10/30 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
2015/10/19 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
2016/08/05 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
angularjs中ng-attr的用法详解
2016/12/31 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
2017/02/18 Javascript
ES6解构赋值实例详解
2017/10/31 Javascript
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
vue.js element-ui tree树形控件改iview的方法
2018/03/29 Javascript
JS+HTML5 canvas绘制验证码示例
2018/12/05 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
2019/02/17 Javascript
layui表格内容溢出的解决方法
2019/09/06 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
Python中线程的MQ消息队列实现以及消息队列的优点解析
2016/06/29 Python
Python字典简介以及用法详解
2016/11/15 Python
Python利用operator模块实现对象的多级排序详解
2017/05/09 Python
python3 拼接字符串的7种方法
2018/09/12 Python
python自动发邮件总结及实例说明【推荐】
2019/05/31 Python
python对验证码降噪的实现示例代码
2019/11/12 Python
Python图片处理模块PIL操作方法(pillow)
2020/04/07 Python
Python基于Twilio及腾讯云实现国际国内短信接口
2020/06/18 Python
雷蛇美国官网:Razer
2020/04/03 全球购物
如何强制垃圾回收
2015/10/06 面试题
小学竞选班干部演讲稿
2014/08/20 职场文书
中学生民族团结演讲稿
2014/08/27 职场文书
学校元旦晚会开场白
2014/12/14 职场文书
篮球拉拉队口号
2015/12/25 职场文书