vue项目中api接口管理总结


Posted in Javascript onApril 20, 2018

默认vue项目中已经使用vue-cli生成,安装axios,基于element-ui开发,axiosconfig目录和api目录是同级,主要记录配置的相关。

1. 在axiosconfig目录下的axiosConfig.js

import Vue from 'vue'
import axios from 'axios'
import qs from 'qs'
import { Message, Loading } from 'element-ui'
// 响应时间
axios.defaults.timeout = 5 * 1000
// 配置cookie
// axios.defaults.withCredentials = true
// 配置请求头
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
// 静态资源
Vue.prototype.$static = ''

// 配置接口地址
axios.defaults.baseURL = ''
var loadingInstance
// POST传参序列化(添加请求拦截器)
axios.interceptors.request.use(
 config => {
  loadingInstance = Loading.service({
   lock: true,
   text: '数据加载中,请稍后...',
   spinner: 'el-icon-loading',
   background: 'rgba(0, 0, 0, 0.7)'
  })
  if (config.method === 'post') {
   config.data = qs.stringify(config.data)
  }
  return config
 },
 err => {
  loadingInstance.close()
  Message.error('请求错误')
  return Promise.reject(err)
 }
)
// 返回状态判断(添加响应拦截器)
axios.interceptors.response.use(
 res => {
  if (res.data.code === 200) {
   loadingInstance.close()
   return res
  } else {
   loadingInstance.close()
   Message.error(res.data.msg)
  }
 },
 err => {
  loadingInstance.close()
  Message.error('请求失败,请稍后再试')
  return Promise.reject(err)
 }
)
// 发送请求
export function post (url, params) {
 return new Promise((resolve, reject) => {
  axios
   .post(url, params)
   .then(
    res => {
     resolve(res.data)
    },
    err => {
     reject(err.data)
    }
   )
   .catch(err => {
    reject(err.data)
   })
 })
}
export function get (url, params) {
 return new Promise((resolve, reject) => {
  axios
   .get(url, {
    params: params
   })
   .then(res => {
    resolve(res.data)
   })
   .catch(err => {
    reject(err.data)
   })
 })
}

2. 在api目录下的index.js,api1.js,api2.js

api1.js
import { post } from '../axiosconfig/'
export default {
  login(params) {
    return post('/users/api/login', params)
  }
}
api2.js
import { post } from '../axiosconfig/'
export default {
  regist(params) {
    return post('/users/api/regist', params)
  }
}
index.js
import user from './api1.js'
import active from './api2.js'
export default {
 api1,
 api2
}

3. main.js 配置

import api from './api/'
Vue.prototype.$api = api

4. 在组件中使用

登录组件中
doLongin() {
 let params={}
 this.$api.api1.login(params).then(res => {
  console.log(res)
 })
}
注册组件中
doRegist() {
 let params={}
 this.$api.api2.regist(params).then(res => {
  console.log(res)
 })
}
Javascript 相关文章推荐
可缩放Reloaded-一个针对可缩放元素的复用组件
Mar 10 Javascript
JQuery实现绚丽的横向下拉菜单
Dec 19 Javascript
轻量级的原生js日历插件calendar.js使用指南
Apr 28 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
May 09 Javascript
JavaScript数组对象实现增加一个返回随机元素的方法
Jul 27 Javascript
纯JS实现图片验证码功能并兼容IE6-8(推荐)
Apr 19 Javascript
layer弹窗插件操作方法详解
May 19 Javascript
jQuery Datatables表头不对齐的解决办法
Nov 27 jQuery
微信网页授权并获取用户信息的方法
Jul 30 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
Dec 04 jQuery
vue中实现弹出层动画效果的示例代码
Sep 25 Javascript
浅析vue中的nextTick
Dec 28 Vue.js
通过jquery获取上传文件名称、类型和大小的实现代码
Apr 19 #jQuery
js Element Traversal规范中的元素遍历方法
Apr 19 #Javascript
关于vue中的ajax请求和axios包问题
Apr 19 #Javascript
详解vue 数据传递的方法
Apr 19 #Javascript
Vue 去除路径中的#号
Apr 19 #Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
Apr 19 #Javascript
基于JS实现html中placeholder属性提示文字效果示例
Apr 19 #Javascript
You might like
windows下安装php的memcache模块的方法
2015/04/07 PHP
学习PHP session的传递方式
2016/06/15 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
2016/07/09 PHP
JavaScript显示表单内元素数量的方法
2015/04/02 Javascript
Bootstrap基础学习
2015/06/16 Javascript
解决Window10系统下Node安装报错的问题分析
2016/12/13 Javascript
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
2017/05/01 jQuery
BootstrapTable加载按钮功能实例代码详解
2017/09/22 Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
ES6 中可以提升幸福度的小功能
2018/08/06 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
2018/12/11 Javascript
layui表格 列自动适应大小失效的解决方法
2019/09/06 Javascript
使用vscode快速建立vue模板过程详解
2019/10/10 Javascript
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
windows下python模拟鼠标点击和键盘输示例
2014/02/28 Python
python微信跳一跳系列之棋子定位像素遍历
2018/02/26 Python
python之Flask实现简单登录功能的示例代码
2018/12/24 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
2019/01/04 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
numpy.linalg.eig() 计算矩阵特征向量方式
2019/11/29 Python
对Pytorch中Tensor的各种池化操作解析
2020/01/03 Python
pytorch下使用LSTM神经网络写诗实例
2020/01/14 Python
英国在线自行车商店:Evans Cycles
2016/09/26 全球购物
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
blueseventy官网:铁人三项和比赛泳衣
2021/02/06 全球购物
Java TransactionAPI (JTA) 主要包含几部分
2012/12/07 面试题
写自荐信三大法宝
2014/01/24 职场文书
大学生村官承诺书
2014/03/28 职场文书
秋季运动会广播稿(30篇)
2014/09/13 职场文书
婚前协议书范本两则
2014/10/16 职场文书
天那边观后感
2015/06/09 职场文书
2015年学校消防安全工作总结
2015/10/14 职场文书
CSS实现两列布局的N种方法
2021/08/02 HTML / CSS
什么是Python装饰器?如何定义和使用?
2022/04/11 Python