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 相关文章推荐
ext 代码生成器
Aug 07 Javascript
跨浏览器开发经验总结(四) 怎么写入剪贴板
May 13 Javascript
如何实现textarea里的不同文本显示不同颜色
Jan 20 Javascript
jquery实现滑动特效代码
Aug 10 Javascript
chrome调试javascript详解
Oct 21 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
Dec 22 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
Feb 13 Javascript
React Native react-navigation 导航使用详解
Dec 01 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
Aug 09 Javascript
vue.js循环radio的实例
Nov 07 Javascript
微信小程序换肤功能实现代码(思路详解)
Aug 25 Javascript
微信小程序实现日历签到
Sep 21 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 email邮箱正则
2008/10/08 PHP
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
linux iconv方法的使用
2011/10/01 PHP
PHP的SQL注入过程分析
2012/01/06 PHP
php分页代码学习示例分享
2014/02/20 PHP
PHP获取栏目的所有子级和孙级栏目的ID号示例
2014/04/01 PHP
php+ajax实现无刷新的新闻留言系统
2020/12/21 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
JQ实现新浪游戏首页幻灯片
2015/07/29 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
jquery siblings获取同辈元素用法实例分析
2016/07/25 Javascript
JavaScript登录记住密码操作(超简单代码)
2017/03/22 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
jQuery实现仿京东防抖动菜单效果示例
2018/07/06 jQuery
Vue组件创建和传值的方法
2018/08/17 Javascript
Vue中的vue-resource示例详解
2018/11/02 Javascript
JavaScript使用prototype属性实现继承操作示例
2020/05/22 Javascript
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
2014/06/04 Python
python实现机械分词之逆向最大匹配算法代码示例
2017/12/13 Python
python用opencv批量截取图像指定区域的方法
2019/01/24 Python
numpy.linspace函数具体使用详解
2019/05/27 Python
抽象类和接口的区别
2012/09/19 面试题
新领导上任欢迎词
2014/01/13 职场文书
消防安全责任书范本
2014/04/15 职场文书
《放小鸟》教学反思
2014/04/20 职场文书
珠宝的促销活动方案
2014/08/31 职场文书
2014年学生会工作总结
2014/11/07 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
淘宝好评语句大全
2014/12/31 职场文书
Python自动化之批量处理工作簿和工作表
2021/06/03 Python
SpringBoot2 参数管理实践之入参出参与校验的方式
2021/06/16 Java/Android
postgresql使用filter进行多维度聚合的解决方法
2021/07/16 PostgreSQL
JS函数式编程实现XDM一
2022/06/16 Javascript
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript