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 29 Javascript
获取服务器传来的数据 用JS去空格的正则表达式
Mar 26 Javascript
通过JavaScript使Div居中并随网页大小改变而改变
Jun 24 Javascript
js处理json以及字符串的比较等常用操作
Sep 08 Javascript
如何在MVC应用程序中使用Jquery
Nov 17 Javascript
易操作的jQuery表单提示插件
Dec 01 Javascript
浅析JavaScript 箭头函数 generator Date JSON
May 23 Javascript
jquery实现(textarea)placeholder自动换行
Dec 22 Javascript
vue-router实现组件间的跳转(参数传递)
Nov 07 Javascript
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
Dec 19 Javascript
vue踩坑记-在项目中安装依赖模块npm install报错
Apr 02 Javascript
详解Bootstrap 学习(一)入门
Apr 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
第十三节--对象串行化
2006/11/16 PHP
PHP源码分析之变量的存储过程分解
2014/07/03 PHP
详解WordPress开发中的get_post与get_posts函数使用
2016/01/04 PHP
php 根据自增id创建唯一编号类
2017/04/06 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
使用laravel根据用户类型来显示或隐藏字段
2019/10/17 PHP
Javascript document.referrer判断访客来源网址
2020/05/15 Javascript
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
JQuery 常用方法和事件详细介绍
2013/04/18 Javascript
jquery获取焦点和失去焦点事件代码
2013/04/21 Javascript
移动端基础事件总结与应用
2017/01/12 Javascript
nodejs前端自动化构建环境的搭建
2017/07/26 NodeJs
D3.js实现拓扑图的示例代码
2018/06/30 Javascript
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
vue-cli 打包使用history模式的后端配置实例
2018/09/20 Javascript
js的对象与函数详解
2019/01/21 Javascript
javascript实现移动端红包雨页面
2020/06/23 Javascript
[01:32:50]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第一场 1月25日
2021/03/11 DOTA
Python中的字符串类型基本知识学习教程
2016/02/04 Python
python基础_文件操作实现全文或单行替换的方法
2017/09/04 Python
Python机器学习之决策树算法
2017/12/22 Python
python实现多进程代码示例
2018/10/31 Python
如何用python 操作zookeeper
2020/12/28 Python
CSS3模块的目前的状况分析
2010/02/24 HTML / CSS
Dillard’s百货官网:Dillards.com
2018/05/26 全球购物
毕业生医学检验求职信
2013/10/16 职场文书
前台文员岗位职责及工作流程
2013/11/19 职场文书
心得体会范文
2014/01/04 职场文书
双语教学实施方案
2014/03/23 职场文书
查摆剖析材料范文
2014/09/30 职场文书
出售房屋协议书范本
2014/10/06 职场文书
党员民主生活会材料
2014/12/15 职场文书
2015年人事科工作总结
2015/04/28 职场文书
初中毕业生感言
2015/07/31 职场文书
幼儿园教师暑期培训心得体会
2016/01/09 职场文书