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 相关文章推荐
层序遍历在ExtJs的TreePanel中的应用
Oct 16 Javascript
jQuery插件实现控制网页元素动态居中显示
Mar 24 Javascript
JS中frameset框架弹出层实例代码
Apr 01 Javascript
利用BootStrap弹出二级对话框的简单实现方法
Sep 21 Javascript
JavaScript实现无刷新上传预览图片功能
Aug 02 Javascript
vue与bootstrap实现时间选择器的示例代码
Aug 26 Javascript
bootstrap fileinput插件实现预览上传照片功能
Jan 23 Javascript
JS常用的几种数组遍历方式以及性能分析对比实例详解
Apr 11 Javascript
Vue实现6位数密码效果
Aug 18 Javascript
原生js实现each方法实例代码详解
May 27 Javascript
js模拟F11页面全屏显示
Sep 17 Javascript
浅谈VUE中演示v-for为什么要加key
Jan 16 Javascript
通过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
PHP foreach循环使用详解与实例代码
2010/05/08 PHP
php curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
2011/04/07 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
PHP实现多图上传(结合uploadify插件)思路分析
2016/11/30 PHP
详细分析PHP 命名空间(namespace)
2020/06/30 PHP
JavaScript表单常用验证集合
2008/01/16 Javascript
javascript EXCEL 操作类代码
2009/07/30 Javascript
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
2013/09/25 Javascript
将查询条件的input、select清空
2014/01/14 Javascript
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
基于jquery实现左右按钮点击的图片切换效果
2021/01/27 Javascript
jQuery+canvas实现的球体平抛及颜色动态变换效果
2016/01/28 Javascript
使用jQuery操作HTML的table表格的实例解析
2016/03/13 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
Javascript 普通函数和构造函数的区别
2016/11/05 Javascript
Bootstrap显示与隐藏简单实现代码
2017/03/06 Javascript
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
Vue.use源码学习小结
2018/06/20 Javascript
vue中Element-ui 输入银行账号每四位加一个空格的实现代码
2018/09/14 Javascript
解决vue的router组件component在import时不能使用变量问题
2020/07/26 Javascript
Python可变参数函数用法实例
2015/07/07 Python
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
python add_argument()用法解析
2020/01/29 Python
Django使用Celery加redis执行异步任务的实例内容
2020/02/20 Python
详解python内置常用高阶函数(列出了5个常用的)
2020/02/21 Python
Python实现LR1文法的完整实例代码
2020/10/25 Python
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
运动会演讲稿
2014/05/07 职场文书
2014年中职班主任工作总结
2014/12/16 职场文书
三方协议书
2015/01/27 职场文书
2015年教师节活动总结
2015/03/20 职场文书
消防隐患整改通知书
2015/04/22 职场文书
同意报考公务员证明
2015/06/17 职场文书
Python机器学习之PCA降维算法详解
2021/05/19 Python
Python上下文管理器Content Manager
2021/06/26 Python