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 弹出框 替代浏览器的弹出框
Oct 29 Javascript
javascript权威指南 学习笔记之javascript数据类型
Sep 24 Javascript
同一页面多个商品倒计时JS 基于面向对象的javascript
Feb 16 Javascript
jqueyr判断checkbox组的选中(示例代码)
Nov 08 Javascript
jQuery中多个元素的Hover事件解决方案
Jun 12 Javascript
详解javascript事件绑定使用方法
Oct 20 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
Dec 14 Javascript
jquery实现tab选项卡切换效果(悬停、下方横线动画位移)
May 05 jQuery
JS中的回调函数实例浅析
Mar 21 Javascript
vue双向数据绑定知识点总结
Apr 18 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
Nov 19 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
Jan 15 jQuery
浅谈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
收音机怀古---春雷3P7图片欣赏
2021/03/02 无线电
php 生成短网址原理及代码
2014/01/23 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
使用jQuery清空file文件域的解决方案
2013/04/12 Javascript
基于jQuery实现下拉框
2014/11/24 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
2015/02/28 Javascript
JS生成一维码(条形码)功能示例
2017/01/19 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
AngularJS 仿微信图片手势缩放的实例
2017/09/28 Javascript
详解从买域名到使用pm2部署node.js项目全过程
2018/03/07 Javascript
tracking.js页面人脸识别插件使用方法
2020/04/16 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
[50:11]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第三场
2018/04/09 DOTA
Flask框架Jinjia模板常用语法总结
2018/07/19 Python
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
Python使用字典的嵌套功能详解
2019/02/27 Python
python3通过selenium爬虫获取到dj商品的实例代码
2019/04/25 Python
Python循环中else,break和continue的用法实例详解
2019/07/11 Python
浅谈pytorch torch.backends.cudnn设置作用
2020/02/20 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
python里的单引号和双引号的有什么作用
2020/06/17 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
Myprotein俄罗斯官网:欧洲第一运动营养品牌
2019/05/05 全球购物
汽车维修与检测专业应届生求职信
2013/11/12 职场文书
毕业生求职的求职信
2013/12/05 职场文书
优秀信贷员先进事迹
2014/01/31 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书
婚前协议书范本两则
2014/10/16 职场文书
2014年客房部工作总结
2014/11/22 职场文书
学期个人工作总结
2015/02/13 职场文书
中学生自我评价2015
2015/03/03 职场文书
大学生团日活动总结
2015/05/06 职场文书
教师读书活动心得体会
2016/01/14 职场文书
Python面试不修改数组找出重复的数字
2022/05/20 Python