vue简单封装axios插件和接口的统一管理操作示例


Posted in Javascript onFebruary 02, 2020

本文实例讲述了vue简单封装axios插件和接口的统一管理操作。分享给大家供大家参考,具体如下:

现在很多公司的项目都是前后端分离的项目,那么说到前后端分离,必定会有ajax请求来获得后台的数据。

在做jquery项目的时候,我们都会使用它封装好的方法来直接发起ajax请求。

在vue项目中,我们使用最多的就是axios这个插件,下面就简单的封装下这个插件并且把接口给统一化管理。

一、安装和配置

1.在项目根目录下打开终端安装

npm install axios -S

2.安装完成以后,在src目录下创建utils目录,用来存放用到的所有工具和插件(个人习惯)

3.在utils目录创建request.js文件,用来配置axios,代码如下:

import axios from 'axios' //引入axios
const service = axios.create({
 // api 的 baseUrl 就是每个请求前面相同的地址,这个地方因为我配置了环境,所以直接取环境里的配置
 baseURL: process.env.BASE_URL,
 timeout: 5000 // 请求超时时间
})
// request拦截器
service.interceptors.request.use(
 config => {
  //这里是每个请求的设置,比如每个请求都携带一个token,或者当为post请求时,引入qs格式化参数。
  return config
 },
 error => {
  console.log('请求失败:' + error)
  Promise.reject(error)
 }
)
// response 拦截器
service.interceptors.response.use(
 response => {
  const res = response.data
  //这个地方的code自己与后台约定(可以根据状态码,设置自己要提示的信息)
  if (res._code !== '10000') {
   //在此可以加几种比较普遍的设置,然后可以把单独的返到页面中设置
   return Promise.reject(res)
  } else {
   return response.data
  }
 },
 error => {
  console.log('响应失败:' + error)
  return Promise.reject(error)
 }
)
export default service

二、使用

1.在src目录下创建api文件夹,api文件夹与页面文件夹目录结构相同,名字最好也其相同语义的名字(个人习惯,方便管理)

2.比如我的页面结构里有个manage目录,里面有个user.vue页面,那么相同的在api目录下,也应有个manage目录,里面有个user.js文件

3.user.js代码如下:

//引入配置好的axios
import request from '@/utils/request'
//获取用户列表
export const getUserList = params => { return request({ url: '你的接口地址', method: 'get', params }) }
//增加用户
export const addUser = data => { return request({ url: '你的接口地址', method: 'post', data }) }
//删除用户
export const delUser = data => { return request({ url: '你的接口地址', method: 'post', data }) }
//修改用户信息
export const addUserInfo = data => { return request({ url: '你的接口地址', method: 'post', data }) }
//查询用户详细信息
export const getUserDetail = params => { return request({ url: '你的接口地址', method: 'get', params }) }

4.user.vue代码如下:

<script>
import userApi from '@/api/manage/user'
export default {
  name: "User",
  data(){
    return {}
  },
  created(){
    //不需要传递参数
    userApi.getUserList()
    .then( res => {
      //成功回调
    })
    .catch( err => {
      //失败回调
    })
    //需要传递参数
    let userInfo = {
     name: '张三',
     age: 18
    }
    userApi.addUser(userInfo)
    .then( res => {
      //成功回调
    })
    .catch( err => {
      //失败回调
    })
  }
}
</script>

附常见状态码:

const status = error.response.status;
let msg = "";
switch (status) {
   case 400:
    msg = "错误的请求"
    break;
   case 401:
    msg = "未授权,请重新登录"
    break;
   case 403:
    msg = "拒绝访问"
    break;
   case 404:
    msg = "未找到该接口地址"
    break;
   case 405:
    msg = "请求未被允许"
    break;
   case 408:
    msg = "请求超时"
    break;
   case 500:
    msg = "服务端出错了"
    break;
   case 501:
    msg = "网络未实现"
    break;
   case 502:
    msg = "网络错误"
    break;
   case 503:
    msg = "服务不可用"
    break;
   case 504:
    msg = "网络超时"
    break;
   case 505:
    msg = "http版本不支持"
    break;
   default:
    msg = "连接错误"
    break;
 }

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
基于jQuery的树控件实现代码(asp.net+json)
Jul 11 Javascript
jQuery实现的图片分组切换焦点图插件
Jan 06 Javascript
node.js中格式化数字增加千位符的几种方法
Jul 03 Javascript
angular.bind使用心得
Oct 26 Javascript
简单解析JavaScript中的__proto__属性
May 10 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
May 27 Javascript
完美实现js选项卡切换效果(二)
Mar 08 Javascript
JS实现简单表格排序操作示例
Oct 07 Javascript
使用webpack将ES6转化ES5的实现方法
Oct 13 Javascript
javascript实现超好看的3D烟花特效
Jan 01 Javascript
angular组件间传值测试的方法详解
May 07 Javascript
Vue 401配合Vuex防止多次弹框的案例
Nov 11 Javascript
vue实现路由不变的情况下,刷新页面操作示例
Feb 02 #Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
Feb 01 #jQuery
基于node+vue实现简单的WebSocket聊天功能
Feb 01 #Javascript
基于vue和websocket的多人在线聊天室
Feb 01 #Javascript
node crawler如何添加promise支持
Feb 01 #Javascript
js 计算月/周的第一天和最后一天代码
Feb 01 #Javascript
js获取本日、本周、本月的时间代码
Feb 01 #Javascript
You might like
dedecms函数分享之获取某一栏目所有子栏目
2014/05/19 PHP
ThinkPHP3.1新特性之多数据库操作更加完善
2014/06/19 PHP
php实现的Cookies操作类实例
2014/09/24 PHP
php微信高级接口群发 多客服
2016/06/23 PHP
Django中通过定时任务触发页面静态化的处理方式
2018/08/29 PHP
用js重建星际争霸
2006/12/22 Javascript
JScript中使用ADODB.Stream判断文件编码的代码
2008/06/09 Javascript
基于jquery+thickbox仿校内登录注册框
2010/06/07 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
jQuery在ul中显示某个li索引号的方法
2015/03/17 Javascript
学习JavaScript设计模式(多态)
2015/11/25 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
2016/04/01 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
原生JS实现DOM加载完成马上执行JS代码的方法
2018/09/07 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
JavaScript迭代器的含义及用法
2019/06/21 Javascript
微信小程序button标签open-type属性原理解析
2020/01/21 Javascript
利用js实现简易红绿灯
2020/10/15 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
Vue 事件的$event参数=事件的值案例
2021/01/29 Vue.js
详解微信小程序(Taro)手动埋点和自动埋点的实现
2021/03/02 Javascript
Python获取电脑硬件信息及状态的实现方法
2014/08/29 Python
详解Python用三种方式统计词频的方法
2019/07/29 Python
python——全排列数的生成方式
2020/02/26 Python
python thrift 实现 单端口多服务的过程
2020/06/08 Python
CSS3中几个新增加的盒模型属性使用教程
2016/03/01 HTML / CSS
CSS3实现淘宝留白的方法
2020/06/05 HTML / CSS
教师党员个人整改措施
2014/10/27 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
拖欠货款起诉状
2015/05/20 职场文书
研究生论文答辩开场白
2015/05/27 职场文书
监护人证明
2015/06/19 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
MongoDB连接数据库并创建数据等使用方法
2021/11/27 MongoDB