美文网首页Vue前端
Vue项目中API设计及拦截器使用

Vue项目中API设计及拦截器使用

作者: 打酱油12138 | 来源:发表于2019-06-13 15:54 被阅读2次

合理添加拦截器、明确API设计的好处:

  • 统一管理接口
  • 减少参数重传
  • 规范前端开发
  • 提升开发效率

合理设计拦截器

import axios from 'axios'
import Router from '@/router'
import { Notification } from 'element-ui'
// 获取全局baseURL
const baseUrl = window.g.baseURL
// 设置axios默认URL
axios.defaults.baseURL = baseUrl
// 对token添加过期处理
export default async (url, data) => {
  const res = await axios.post(url, data)
  // access_token过期
  if (res.data.res === 1100) {
    Notification.error({
      title: '错误',
      message: res.data.msg,
      duration: 1500
    })
    Router.push('/')
  }
  return res
}

// 一、请求拦截器
axios.interceptors.request.use(function (config) {
  // 拦截器处理(这里使用FormData传参,并简单添加token)
  const fm = new FormData()
  if (config.data) {
    // 添加access_token
    if (sessionStorage.access_token) {
      fm.append('access_token',sessionStorage.access_token)
    }
  config.data = fm
  return config
}, function (error) {
  // 对请求错误做些什么
  Notification.error({
    title: '系统错误',
    message: '服务器连接失败',
    duration: 1500
  })
  return Promise.reject(error)
})
// 二、响应拦截器
axios.interceptors.response.use(function (response) {
  return response
}, function (error) {
  // 对响应错误做点什么
  Notification.error({
    title: '系统错误',
    message: '服务器连接失败',
    duration: 1500
  })
  return Promise.reject(error)
})

统一设计管理API

import axios from './axios'

const SUPERKET= 'superket'

// 登录
const ADMIN = '/admin'
export const adminLogin = (data) => axios(SUPERKET+ ADMIN + '/login', data)
// 管理员管理
export const adminList = (data) => axios(SUPERKET+ ADMIN + '/list', data)
export const adminAdd = (data) => axios(SUPERKET+ ADMIN + '/add', data)
export const adminEdit = (data) => axios(SUPERKET+ ADMIN + '/changePassword', data)
export const adminDel = (data) => axios(SUPERKET+ ADMIN + '/del', data)

// 系统设置
const SYSTEM = '/system'
export const systemList = (data) => axios(SUPERKET+ SYSTEM + '/list', data)
export const systemEdit = (data) => axios(SUPERKET+ SYSTEM + '/edit', data)

// 人员管理
const MEMBER = '/member'
export const memberList = (data) => axios(SUPERKET+ MEMBER + '/list', data)
export const memberAdd = (data) => axios(SUPERKET+ MEMBER + '/add', data)
export const memberEdit = (data) => axios(SUPERKET+ MEMBER + '/edit', data)
export const memberDel = (data) => axios(SUPERKET+ MEMBER + '/del', data)

附录
项目目录示意图
未完待续

相关文章

  • Vue项目中API设计及拦截器使用

    合理添加拦截器、明确API设计的好处: 统一管理接口 减少参数重传 规范前端开发 提升开发效率 合理设计拦截器 统...

  • vue代理解决跨域中的proxyTable、proxy

    在vue2x中前端访问api接口时使用代理访问:1.proxyTable在vue早期的cli2项目中使用:找到文件...

  • axios拦截器接口配置与使用

    一:什么是axios拦截器、为什么要使用axios拦截器? 在vue项目中,我们通常使用axios与后台进行数据交...

  • 配置vue2 项目

    1. 在项目中安装 composition-api 体验 vue3 新特性 在使用任何 @vue/composi...

  • vue使用webpack.DefinePlugin实现环境变量

    使用场景:使用于vue项目中,开发环境和生产环境使用不懂得api地址;如果使用vue-cli创建的项目,已经配置好...

  • Vue2中百度地图API的使用

    1,前言 记录一下Vue2项目中,百度地图API的简单使用。 2,申请账号,获取key 需要先申请百度账号,然后登...

  • vue2.0项目中引入sass、less

    一、vue2.0项目中引入sass预编译 (1)安装依赖 vue项目中想要使用sass,需要安装上node-sas...

  • vue项目后台接口管理

    前言 上篇文章axios二次封装及API接口统一管理讲到了vue项目中的axios请求api统一的封装,但是api...

  • vue-i18n国际化使用

    1、安装 vue-i18n 2、注入 vue 实例中,项目中实现调用 api 和 模板语法这边我是顺着使用 npm...

  • vuex工作原理详解

    前言 vuex作为vue官方出品的状态管理框架,以及其简单API设计、便捷的开发工具支持,在中大型的vue项目中得...

网友评论

    本文标题:Vue项目中API设计及拦截器使用

    本文链接:https://www.haomeiwen.com/subject/skoytctx.html