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 相关文章推荐
基于datagrid框架的查询
Apr 08 Javascript
jquery validation验证身份证号,护照,电话号码,email(实例代码)
Nov 06 Javascript
javascript实现完美拖拽效果
May 06 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
Sep 10 Javascript
常用的javascript设计模式
Jan 11 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
Apr 11 jQuery
Koa项目搭建过程详细记录
Apr 12 Javascript
React中使用UEditor百度富文本的方法
Aug 22 Javascript
PHP实现基于Redis的MessageQueue队列封装操作示例
Feb 02 Javascript
js实现烟花特效
Mar 02 Javascript
javascript绘制简单钟表效果
Apr 07 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
Aug 12 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
用JQuery模仿淘宝的图片放大镜显示效果
2011/09/15 Javascript
通过Javascript将数据导出到外部Excel文档的函数代码
2012/06/15 Javascript
Javascript正则控制文本框只能输入整数或浮点数
2014/09/02 Javascript
js变量、作用域及内存详解
2014/09/23 Javascript
Node.js开源应用框架HapiJS介绍
2015/01/14 Javascript
javascript实现支持移动设备画廊
2015/08/24 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
CSS3结合jQuery实现动画效果及回调函数的实例
2017/12/27 jQuery
详解关于Vue版本不匹配问题(Vue packages version mismatch)
2018/09/17 Javascript
js form表单input框限制20个字符,10个汉字代码实例
2019/04/12 Javascript
在vue中阻止浏览器后退的实例
2019/11/06 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
Vue 图片压缩并上传至服务器功能
2020/01/15 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
分享15个最受欢迎的Python开源框架
2014/07/13 Python
使用Python的Flask框架实现视频的流媒体传输
2015/03/31 Python
基于Python函数的作用域规则和闭包(详解)
2017/11/29 Python
详解Python字典的操作
2019/03/04 Python
基于Tensorflow的MNIST手写数字识别分类
2020/06/17 Python
Python 解析xml文件的示例
2020/09/29 Python
匡威英国官网:Converse英国
2018/12/02 全球购物
理肤泉英国官网:La Roche-Posay英国
2019/01/14 全球购物
Chinti & Parker官网:奢华羊绒女装和创新针织设计
2021/01/01 全球购物
医院护士的求职信
2014/01/03 职场文书
教师申诉制度
2014/01/29 职场文书
大二学习计划书范文
2014/04/27 职场文书
食品安全承诺书
2014/05/22 职场文书
2014年行政助理工作总结
2014/11/19 职场文书
七个Python必备的GUI库
2021/04/27 Python
如何理解及使用Python闭包
2021/06/01 Python
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python
浅谈Redis的keys命令到底有多慢
2021/10/05 Redis
【海涛DOTA解说】EVE女子战队独家录像加ZSMJ神牛两连发
2022/04/01 DOTA
pd.drop_duplicates删除重复行的方法实现
2022/06/16 Python
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技