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事件(Event)知识整理
Oct 11 Javascript
解析Javascript小括号“()”的多义性
Dec 03 Javascript
js原型继承的两种方法对比介绍
Mar 30 Javascript
jQuery点击输入框显示验证码图片
May 19 Javascript
javascript类型系统——日期Date对象全面了解
Jul 13 Javascript
webpack2.0搭建前端项目的教程详解
Apr 05 Javascript
node vue项目开发之前后端分离实战记录
Dec 13 Javascript
ES6 let和const定义变量与常量的应用实例分析
Jun 27 Javascript
vue style width a href动态拼接问题的解决
Aug 07 Javascript
如何利用node转发请求详解
Sep 17 Javascript
JavaScript语法约定和程序调试原理解析
Nov 03 Javascript
react中useState使用:如何实现在当前表格直接更改数据
Aug 05 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 面向对象 final类与final方法
2010/05/05 PHP
php生成静态文件的多种方法分享
2012/07/17 PHP
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
Yii不依赖Model的表单生成器用法实例
2014/12/04 PHP
PHP、Java des加密解密实例
2015/04/27 PHP
php求斐波那契数的两种实现方式【递归与递推】
2019/09/09 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
2008/11/24 Javascript
jquery下动态显示jqGrid以及jqGrid的属性设置容易出现问题的解决方法
2010/10/22 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
js保留两位小数使用toFixed实现
2013/07/29 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
js+css实现select的美化效果
2016/03/24 Javascript
vue-quill-editor富文本编辑器简单使用方法
2018/09/21 Javascript
javascript的惯性运动实现代码实例
2019/09/07 Javascript
解析Python中的二进制位运算符
2015/05/13 Python
python中requests库session对象的妙用详解
2017/10/30 Python
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
python 搜索大文件的实例代码
2019/07/08 Python
Python异常继承关系和自定义异常实现代码实例
2020/02/20 Python
Django 自定义权限管理系统详解(通过中间件认证)
2020/03/11 Python
pycharm软件实现设置自动保存操作
2020/06/08 Python
python wsgiref源码解析
2021/02/06 Python
HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)
2019/06/03 HTML / CSS
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
预备党员党校学习自我评价分享
2013/11/12 职场文书
农业资源与环境专业自荐信范文
2013/12/30 职场文书
国贸专业个人求职信范文
2014/01/08 职场文书
新文化运动的口号
2014/06/21 职场文书
日语系毕业求职信
2014/07/27 职场文书
大学生入党积极分子自我评价
2014/09/20 职场文书
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python
Python语言中的数据类型-序列
2022/02/24 Python
Win11 KB5015814遇安装失败 影响开始菜单性能解决方法
2022/07/15 数码科技