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实现动画效果的方法
Jul 20 Javascript
node.js中的fs.chmod方法使用说明
Dec 18 Javascript
一些实用性较高的js方法
Apr 19 Javascript
JS Attribute属性操作详解
May 19 Javascript
jquery 实现复选框的全选操作实例代码
Jan 24 Javascript
jQuery实现table表格信息的展开和缩小功能示例
Jul 21 jQuery
Element input树型下拉框的实现代码
Dec 21 Javascript
vue基础之data存储数据及v-for循环用法示例
Mar 08 Javascript
Vue Router 实现动态路由和常见问题及解决方法
Mar 06 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
Mar 23 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
Apr 15 Javascript
jdk1.8+vue elementui实现多级菜单功能
Sep 24 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图片上传类 附调用方法
2016/05/15 PHP
php使用scandir()函数扫描指定目录下所有文件示例
2019/06/08 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
jQuery UI的Dialog无法提交问题的解决方法
2011/01/11 Javascript
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
一样的table?不一样的table(可编辑状态table)
2012/09/19 Javascript
jquery实现网站超链接和图片提示效果
2013/03/21 Javascript
利用js正则表达式验证手机号,email地址,邮政编码
2014/01/23 Javascript
javascript 回到顶部效果的实现代码
2014/02/17 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
jquery的幻灯片图片切换效果代码分享
2015/09/07 Javascript
jQuery链式操作实例分析
2015/11/16 Javascript
使用Javascript写的2048小游戏
2015/11/25 Javascript
js实现数组去重方法及效率?Ρ? target=
2017/02/14 Javascript
jquery 仿锚点跳转到页面指定位置的实例
2017/02/14 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
2020/04/20 Javascript
JavaScript oncopy事件用法实例解析
2020/05/13 Javascript
[02:30]DOTA2放量测试专访海涛:呼吁保护新手玩家
2013/08/26 DOTA
python的id()函数介绍
2013/02/10 Python
python解析xml文件实例分享
2013/12/04 Python
Python解析nginx日志文件
2015/05/11 Python
教大家玩转Python字符串处理的七种技巧
2017/03/31 Python
Python2和Python3中print的用法示例总结
2017/10/25 Python
PageFactory设计模式基于python实现
2020/04/14 Python
python GUI模拟实现计算器
2020/06/22 Python
详解Html5中video标签那些属性和方法
2019/07/01 HTML / CSS
The North Face北面美国官网:美国著名户外品牌
2018/09/15 全球购物
医学生个人求职信范文
2014/02/07 职场文书
公司客户答谢酒会祝酒词
2015/08/11 职场文书
小学感恩主题班会
2015/08/12 职场文书
MyBatis 动态SQL全面详解
2021/10/05 MySQL
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL
Android Studio实现简易进制转换计算器
2022/05/20 Java/Android