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模式窗口中下载文件无法接收iframe的流
Oct 11 Javascript
javascript 实现字符串反转的三种方法
Nov 23 Javascript
JS中的数组的sort方法使用示例
Jan 22 Javascript
js检测网络是否具体连接功能的代码
May 23 Javascript
js实现简单随机抽奖的方法
Jan 27 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
Nov 23 Javascript
7个去伪存真的JavaScript面试题
Jan 07 Javascript
BootStrap创建响应式导航条实例代码
May 31 Javascript
浅谈javascript中执行环境(作用域)与作用域链
Dec 08 Javascript
vue服务端渲染缓存应用详解
Sep 12 Javascript
浅谈bootstrap layer.open中end的使用方法
Sep 12 Javascript
layui table复选框禁止某几条勾选的实例
Sep 20 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函数)
2006/10/09 PHP
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
2014/08/23 PHP
PHP函数实现分页含文本分页和数字分页
2014/10/23 PHP
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
php微信公众平台配置接口开发程序
2016/09/22 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
js location.replace与location.reload的区别
2010/09/08 Javascript
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
2010/11/30 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
javascript开发随笔二 动态加载js和文件
2011/11/25 Javascript
js获取input标签的输入值实现代码
2013/08/05 Javascript
浅谈javascript回调函数
2014/12/07 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
nodejs入门教程二:创建一个简单应用示例
2017/04/24 NodeJs
vue填坑之webpack run build 静态资源找不到的解决方法
2018/09/03 Javascript
Nodejs模块的调用操作实例分析
2018/12/25 NodeJs
vue2.0实现的tab标签切换效果(内容可自定义)示例
2019/02/11 Javascript
详解js创建对象的几种方法及继承
2019/04/12 Javascript
express框架下使用session的方法
2019/07/31 Javascript
JavaScript canvas实现雪花随机动态飘落
2020/02/08 Javascript
[28:05]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第一场 10月30日
2020/10/31 DOTA
Python中使用gzip模块压缩文件的简单教程
2015/04/08 Python
Django中Model的使用方法教程
2018/03/07 Python
tensorflow 中对数组元素的操作方法
2018/07/27 Python
浅谈python的深浅拷贝以及fromkeys的用法
2019/03/08 Python
Django Rest framework解析器和渲染器详解
2019/07/25 Python
解决pandas展示数据输出时列名不能对齐的问题
2019/11/18 Python
python yield和Generator函数用法详解
2020/02/10 Python
莫斯科购买书籍网站:Book24
2020/01/12 全球购物
C++如何引用一个已经定义过的全局变量
2014/08/25 面试题
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
2012/05/30 面试题
《宿建德江》教学反思
2014/04/23 职场文书
2014年科普工作总结
2014/12/06 职场文书
JavaScript 实现页面滚动动画
2021/04/24 Javascript
4种方法python批量修改替换列表中元素
2022/04/07 Python
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python