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一组验证函数
Dec 20 Javascript
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
Sep 10 Javascript
Blocksit插件实现瀑布流数据无限( 异步)加载
Jun 20 Javascript
javascript实现倒计时并弹窗提示特效
Jun 05 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
Jan 04 Javascript
Angular2使用Angular CLI快速搭建工程(一)
May 21 Javascript
什么是Vue.js框架 为什么选择它?
Oct 17 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
Sep 19 Javascript
详解关于html,css,js三者的加载顺序问题
Apr 10 Javascript
Node.js 多进程处理CPU密集任务的实现
May 26 Javascript
解决vue的router组件component在import时不能使用变量问题
Jul 26 Javascript
React Ant Design树形表格的复杂增删改操作
Nov 02 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调用Oracle存储过程
2006/10/09 PHP
域名查询代码公布
2006/10/09 PHP
关于文本留言本的分页代码
2006/10/09 PHP
php事务处理实例详解
2014/07/11 PHP
PHP信号量基本用法实例详解
2016/02/12 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
php字符集转换
2017/01/23 PHP
PHP unset函数原理及使用方法解析
2020/08/14 PHP
在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
2011/06/02 Javascript
简单常用的幻灯片播放实现代码
2013/09/25 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
JavaScript极简入门教程(三):数组
2014/10/25 Javascript
javascript数组去重方法汇总
2015/04/23 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
Vue.js实现表格动态增加删除的方法(附源码下载)
2017/01/20 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
浅谈小程序 setData学问多
2019/02/20 Javascript
Vue使用localStorage存储数据的方法
2019/05/27 Javascript
vue 接口请求地址前缀本地开发和线上开发设置方式
2020/08/13 Javascript
ES6字符串的扩展实例
2020/12/21 Javascript
Python中暂存上传图片的方法
2015/02/18 Python
浅谈numpy库的常用基本操作方法
2018/01/09 Python
决策树剪枝算法的python实现方法详解
2019/09/18 Python
python3检查字典传入函数键是否齐全的实例
2020/06/05 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
html5开发之viewport使用
2013/10/17 HTML / CSS
写一个方法1000的阶乘
2012/11/21 面试题
课改先进个人汇报材料
2014/01/26 职场文书
前台文员职责范本
2014/03/07 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
离职感谢信怎么写
2015/01/22 职场文书
高中教师个人总结
2015/02/10 职场文书
2015年感恩节演讲稿(优选篇)
2015/03/20 职场文书
导游词之峨眉山
2019/12/16 职场文书