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 相关文章推荐
初试jQuery EasyUI 使用介绍
Apr 01 Javascript
jQuery队列操作方法实例
Jun 11 Javascript
jQuery功能函数详解
Feb 01 Javascript
AngularJS入门教程之Helloworld示例
Dec 25 Javascript
vue模板语法-插值详解
Mar 06 Javascript
详解Vue 动态添加模板的几种方法
Apr 25 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
May 09 Javascript
Async Validator 异步验证使用说明
Jul 03 Javascript
Angular4实现鼠标悬停3d倾斜效果
Oct 25 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
Jun 30 Javascript
javascript+HTML5 canvas绘制时钟功能示例
May 15 Javascript
Node.js系列之连接DB的方法(3)
Aug 30 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实现把url转换迅雷thunder资源下载地址的方法
2014/11/07 PHP
Zend Framework实现多文件上传功能实例
2016/03/21 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
PHP实现唤起微信支付功能
2019/02/18 PHP
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
2015/04/06 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
2015/05/15 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
2015/05/28 Javascript
javascript弹出拖动窗口
2015/08/11 Javascript
jQuery实现美观的多级动画效果菜单代码
2015/09/06 Javascript
js跨域资源共享 基础篇
2016/07/02 Javascript
jquery siblings获取同辈元素用法实例分析
2016/07/25 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
2016/09/03 Javascript
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
小程序实现tab标签页
2020/11/16 Javascript
详解Vue的mixin策略
2020/11/19 Vue.js
python类参数self使用示例
2014/02/17 Python
Python3 正在毁灭 Python的原因分析
2014/11/28 Python
Python 多进程并发操作中进程池Pool的实例
2017/11/01 Python
matplotlib基础绘图命令之imshow的使用
2020/08/13 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
Order by的几种用法
2013/06/16 面试题
产品质量承诺范本
2014/03/31 职场文书
中学生运动会口号
2014/06/07 职场文书
社区班子个人对照检查材料思想汇报
2014/10/07 职场文书
小学生作文评语集锦
2014/12/25 职场文书
考博导师推荐信范文
2015/03/27 职场文书
检讨书格式
2015/05/07 职场文书
哪类餐饮行业,最适合在高校创业?
2019/08/19 职场文书
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
2021/03/30 HTML / CSS
用JS实现飞机大战小游戏
2021/06/09 Javascript
Mysql超详细讲解死锁问题的理解
2022/04/01 MySQL
Go归并排序算法的实现方法
2022/04/06 Golang