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 相关文章推荐
js常用排序实现代码
Dec 28 Javascript
重写javascript中window.confirm的行为
Oct 21 Javascript
jQuery实现用户注册的表单验证示例
Aug 28 Javascript
JavaScript中的toUTCString()方法使用详解
Jun 12 Javascript
js如何打印object对象
Oct 16 Javascript
JSONObject使用方法详解
Dec 17 Javascript
两行代码轻松搞定JavaScript日期验证
Aug 03 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
Nov 13 Javascript
Vue.js实现模拟微信朋友圈开发demo
Apr 20 Javascript
分分钟学会vue中vuex的应用(入门教程)
Sep 14 Javascript
解析Vue.js中的组件
Feb 02 Javascript
Jquery的autocomplete插件用法及参数讲解
Mar 12 jQuery
通过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
初探PHP5
2006/10/09 PHP
php中取得文件的后缀名?
2012/02/20 PHP
php查看当前Session的ID实例
2015/03/16 PHP
PHP中通过trigger_error触发PHP错误示例
2015/06/23 PHP
php通过smtp邮件验证登陆的方法
2016/05/11 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
文字幻灯片
2006/06/26 Javascript
jquery 插件 人性化的消息显示
2008/01/21 Javascript
jQuery为iframe的body添加click事件的实现代码
2011/04/07 Javascript
查找iframe里元素的方法可传参
2013/09/11 Javascript
Node.js中child_process实现多进程
2015/02/03 Javascript
原生js实现商品放大镜效果
2017/01/12 Javascript
js CSS3实现卡牌旋转切换效果
2017/07/04 Javascript
详解webpack中的hash、chunkhash、contenthash区别
2018/01/05 Javascript
安装Node.js并启动本地服务的操作教程
2018/05/12 Javascript
webstorm+vue初始化项目的方法
2018/10/18 Javascript
webpack3升级到webpack4遇到问题总结
2019/09/30 Javascript
vue实现计算器功能
2020/02/22 Javascript
js构造函数constructor和原型prototype原理与用法实例分析
2020/03/02 Javascript
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
[50:11]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第三场
2018/04/09 DOTA
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
node.js获取参数的常用方法(总结)
2017/05/29 Python
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
2019/08/15 Python
Python打印不合法的文件名
2020/07/31 Python
Python识别验证码的实现示例
2020/09/30 Python
python 如何停止一个死循环的线程
2020/11/24 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
印度在线购物网站:Paytmmall
2019/07/24 全球购物
学校党员对照检查材料
2014/08/28 职场文书
教书育人演讲稿
2014/09/11 职场文书
支行行长竞聘报告
2014/11/06 职场文书
原料仓管员岗位职责
2015/04/01 职场文书
MySQL约束超详解
2021/09/04 MySQL