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 相关文章推荐
javascript 命名规则 变量命名规则
Feb 25 Javascript
Jquery实现三层遍历删除功能代码
Apr 23 Javascript
简单时间提示DEMO从0开始一直进行计时
Nov 19 Javascript
用javascript替换URL中的参数值示例代码
Jan 27 Javascript
Jquery api 速查表分享
Jan 12 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
Feb 10 Javascript
Jquery和JS获取ul中li标签的实现方法
Jun 02 Javascript
javascript jquery对form元素的常见操作详解
Jun 12 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
Feb 16 Javascript
Koa日志中间件封装开发详解
Mar 09 Javascript
如何使用JavaScript实现栈与队列
Jun 24 Javascript
Vue Element UI + OSS实现上传文件功能
Jul 31 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
thinkphp实现like模糊查询实例
2014/10/29 PHP
php中mt_rand()随机数函数用法
2014/11/24 PHP
php将数组转换成csv格式文件输出的方法
2015/03/14 PHP
PHP使用函数用法详解
2018/09/30 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
用javascript获取textarea中的光标位置
2008/05/06 Javascript
javascript this用法小结
2008/12/19 Javascript
AngularJS+Node.js实现在线聊天室
2015/08/28 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
详解有关easyUI的拖动操作中droppable,draggable用法例子
2017/06/03 Javascript
VueJs 将接口用webpack代理到本地的方法
2017/11/27 Javascript
javascript按顺序加载运行js方法
2017/12/01 Javascript
Vue组件开发技巧总结
2018/03/04 Javascript
在Vue-cli里应用Vuex的state和mutations方法
2018/09/16 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
2020/04/15 Javascript
Node.js web 应用如何封装到Docker容器中
2020/09/01 Javascript
[04:26]2014DOTA2西雅图国际邀请赛 总决赛TOPPLAY
2014/07/22 DOTA
简单的Python抓taobao图片爬虫
2014/10/26 Python
简单谈谈Python流程控制语句
2016/12/04 Python
python数据处理实战(必看篇)
2017/06/11 Python
利用标准库fractions模块让Python支持分数类型的方法详解
2017/08/11 Python
python实现生命游戏的示例代码(Game of Life)
2018/01/24 Python
浅谈Python 列表字典赋值的陷阱
2019/01/20 Python
利用ctypes获取numpy数组的指针方法
2019/02/12 Python
python 类之间的参数传递方式
2019/12/20 Python
python dataframe NaN处理方式
2019/12/26 Python
CSS3径向渐变之大鱼吃小鱼之孤单的大鱼
2016/04/26 HTML / CSS
Onzie官网:美国时尚瑜伽品牌
2019/08/21 全球购物
酒店人事专员岗位职责
2013/12/19 职场文书
团代会开幕词
2015/01/28 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书
教师培训学习心得体会
2016/01/21 职场文书
MySQL示例讲解数据库约束以及表的设计
2022/06/16 MySQL
mysqldump进行数据备份详解
2022/07/15 MySQL