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 相关文章推荐
JS解析json数据并将json字符串转化为数组的实现方法
Dec 25 Javascript
Bootstrap项目实战之子栏目资讯内容
Apr 25 Javascript
JavaScript 继承详解(五)
Oct 11 Javascript
Bootstrap基本样式学习笔记之按钮(4)
Dec 07 Javascript
jquery submit()不能提交表单的解决方法
Apr 24 jQuery
JavaScript实现三级联动菜单实例代码
Jun 26 Javascript
vuejs 单文件组件.vue 文件的使用
Jul 28 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
Sep 27 Javascript
对vux点击事件的优化详解
Aug 28 Javascript
create-react-app安装出错问题解决方法
Sep 04 Javascript
cdn模式下vue的基本用法详解
Oct 07 Javascript
uni app仿微信顶部导航条功能
Sep 17 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
实时抓取YAHOO股票报价的代码
2006/10/09 PHP
PHP4实际应用经验篇(1)
2006/10/09 PHP
javascript,php获取函数参数对象的代码
2011/02/03 PHP
php读取文件内容的方法汇总
2015/01/24 PHP
php通过分类列表产生分类树数组的方法
2015/04/20 PHP
php集成动态口令认证
2016/07/21 PHP
使用Zttp简化Guzzle 调用
2017/07/02 PHP
php字符串过滤strip_tags()函数用法实例分析
2019/06/24 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
laravel 实现根据字段不同值做不同查询
2019/10/23 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
2013/04/26 Javascript
js简单实现让文本框内容逐个字的显示出来
2013/10/22 Javascript
基于jquery实现表格内容筛选功能实例解析
2016/05/09 Javascript
javascript 实现动态侧边栏实例详解
2016/11/11 Javascript
详解js的六大数据类型
2016/12/27 Javascript
node.js多个异步过程中判断执行是否完成的解决方案
2017/12/10 Javascript
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
2020/01/03 Javascript
jQuery实现简易QQ聊天框
2020/02/10 jQuery
使用python实现baidu hi自动登录的代码
2013/02/10 Python
python简单实现旋转图片的方法
2015/05/30 Python
python字符串str和字节数组相互转化方法
2017/03/18 Python
Python龙贝格法求积分实例
2020/02/29 Python
python实现扫雷游戏
2020/03/03 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
Python实现Word表格转成Excel表格的示例代码
2020/04/16 Python
python opencv肤色检测的实现示例
2020/12/21 Python
CSS3 仿微信聊天小气泡实例代码
2017/04/05 HTML / CSS
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
如何手工释放资源
2013/12/15 面试题
学习心得体会
2014/01/01 职场文书
拾金不昧的表扬信
2014/01/16 职场文书
管理提升方案
2014/06/04 职场文书
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js
JS的深浅复制详细
2021/10/16 Javascript