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 相关文章推荐
20款非常优秀的 jQuery 工具提示插件 推荐
Jul 15 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
Mar 10 Javascript
JavaScript获取flash对象与网上的有所不同
Apr 21 Javascript
javascript顺序加载图片的方法
Jul 18 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
Aug 28 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)
Dec 02 Javascript
Angularjs2不同组件间的通信实例代码
May 06 Javascript
JavaScript 基础表单验证示例(纯Js实现)
Jul 20 Javascript
Vue 实现展开折叠效果的示例代码
Aug 27 Javascript
修改vue+webpack run build的路径方法
Sep 01 Javascript
vuejs数据超出单行显示更多,点击展开剩余数据实例
May 05 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
May 14 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的异常处理类Exception的使用及说明
2012/06/13 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
js利用div背景,做一个竖线的效果。
2008/11/22 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
2014/07/30 Javascript
JS实现FLASH幻灯片图片切换效果的方法
2015/03/04 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
2016/03/29 Javascript
javascript中获取class的简单实现
2016/07/12 Javascript
JS 动态判断PC和手机浏览器实现代码
2016/09/21 Javascript
JQuery Ajax WebService传递参数的简单实例
2016/11/02 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
jQuery中extend函数简单用法示例
2017/10/11 jQuery
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
从0到1构建vueSSR项目之路由的构建
2019/03/07 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
js中的面向对象之对象常见创建方法详解
2019/12/16 Javascript
JS异步宏队列与微队列原理区别详解
2020/07/02 Javascript
[50:38]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第二场 3月7日
2021/03/11 DOTA
python脚本实现数据导出excel格式的简单方法(推荐)
2016/12/30 Python
Python基于高斯消元法计算线性方程组示例
2018/01/17 Python
基于随机梯度下降的矩阵分解推荐算法(python)
2018/08/31 Python
详解python爬虫系列之初识爬虫
2019/04/06 Python
Python for循环与getitem的关系详解
2020/01/02 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
2020/05/18 Python
Python requests接口测试实现代码
2020/09/08 Python
求高于平均分的学生学号及成绩
2016/09/01 面试题
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
致全体运动员广播稿
2014/02/01 职场文书
乡镇干部十八大感言
2014/02/17 职场文书
审计专业自荐信范文
2014/04/21 职场文书
倡议书格式模板
2014/05/13 职场文书
体育个人工作总结
2015/02/09 职场文书
借款民事起诉状范文
2015/05/19 职场文书
团结友爱主题班会
2015/08/13 职场文书
关于感恩的作文
2019/08/26 职场文书