1、项目路径下,引入axios、qs依赖

npm install axios

npm install qs

2、在项目的src路径下新建一个commJs文件夹,在commJs文件夹里新建aps.js和request.js,api.js用于写接口,对axios的封装写在request.js里

request.js

import axios from 'axios';
import QS from 'qs'; //自动切换环境
axios.defaults.baseURL = process.env._BASEURL
//设置超时时间
axios.defaults.timeout = 10000;
// post请求头
axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'
axios.defaults.withcredentials = true //请求拦截(请求发出前处理请求)
axios.interceptors.request.use((config) => {
//在发送请求之前如果为post序列化请求参数
if (config.method === 'post') {
config.data = config.data;
}
return config;
}, (error) => {
return Promise.reject(error);
}); // 响应拦截器(处理响应数据)
axios.interceptors.response.use((res) => {
//对响应数据做判断,与后台协议统一接口返回格式
console.log('>>>>>>>response: ', res);
if (res.data.succ != 'ok') { //这个判断可根据实际情况修改
return Promise.reject(res);
}
return res;
}, (error) => {
return Promise.reject(error);
}); // 封装get方法
function get(url, params){
return new Promise((resolve, reject) =>{
axios.get(url, params).then(res =>{
resolve(res.data);
}).catch(err =>{
reject(err.data);
})
});
} // 封装post方法
function post(url, params){
return new Promise((resolve, reject) =>{
axios.post(url, params).then(res =>{
resolve(res.data);
}).catch(err =>{
reject(err.data);
})
});
} //对外接口
export function request({method, url, data}){
if(method == 'get'){
return get(url, data);
}else if(method == 'post'){
return post(url, data);
}
} export default {
install(Vue) {
Vue.prototype.$axios = axios;
Vue.prototype.$request = function () {
return request;
}
}
}

api.js

import {
request
} from './request' // 列表查询接口
export const getList = (parmas) => {
return request({
url: 'xxx/xxx/xxx',
method: 'post',
data: parmas
})
}

3、在具体组件调用

//index.vue
import { getList } from "../../comm/js/api.js";
export default {
methods: {
getPage() {
var param = {
currentUser: '',
currentPage: "1",
pageSize: "10"
};
getList(param).then(res => {
if (!res.result.list) {
this.list = [];
} else {
this.list = res.result.list;
}
});
}
}

axios封装,使用拦截器统一处理接口的更多相关文章

  1. axios封装的拦截器的应用

    axios拦截器   页面发送http请求,很多情况我们要对请求和其响应进行特定的处理:如果请求数非常多,单独对每一个请求进行处理会变得非常麻烦,程序的优雅性也会大打折扣.好在强大的axios为开发者 ...

  2. axios 拦截器统一在接口增加时间戳参数,防止走缓存。

    request.interceptors.request.use( config => { if (config.method == 'post') { config.data = { ...c ...

  3. 细说vue axios登录请求拦截器

    当我们在做接口请求时,比如判断登录超时时候,通常是接口返回一个特定的错误码,那如果我们每个接口都去判断一个耗时耗力,这个时候我们可以用拦截器去进行统一的http请求拦截. 1.安装配置axios cn ...

  4. Springboot + redis + 注解 + 拦截器来实现接口幂等性校验

    Springboot + redis + 注解 + 拦截器来实现接口幂等性校验   1. SpringBoot 整合篇 2. 手写一套迷你版HTTP服务器 3. 记住:永远不要在MySQL中使用UTF ...

  5. vue+axois 封装请求+拦截器(请求锁+统一错误)

     需求 封装常用请求 拦截器-请求锁 统一处理错误码 一.封装常用的请求 解决痛点:不要每一个模块的api都还要写get,post,patch请求方法.直接将这些常用的方法封装好. 解决方案:写一个类 ...

  6. axios请求响应拦截器的应用

    什么是axios拦截器? 一般在使用axios时,会用到拦截器的功能,一般分为两种:请求拦截器.响应拦截器. 请求拦截器在请求发送前进行必要操作处理 例如添加统一cookie.请求体加验证.设置请求头 ...

  7. Axios Token验证拦截器

    import axios from 'axios'; // req拦截 axios.interceptors.request.use( //设置头部的token config.headers['tok ...

  8. jquery.ajax与axios及定义拦截器

    首先导入jquery和axios包 jquery.ajax function reg(){ var username = $("#username").val(); var pas ...

  9. structs2----数据封装以及拦截器

    技术分析之在Struts2框架中使用Servlet的API 1. 在Action类中也可以获取到Servlet一些常用的API * 需求:提供JSP的表单页面的数据,在Action中使用Servlet ...

随机推荐

  1. 华为eNSP上的NAT地址转换配置

    NAT是将IP数据报文报头中的IP地址转换为另一个IP地址的过程,主要用于实现内部网络(私有IP地址)访问外部网络(公有IP地址)的功能. 1.实验拓扑 地址表: 1.完成各个接口基本配置之后使用pi ...

  2. mysql 数据库批量刷新表字段数据

    UPDATE a,bSET b.studentno = a.studentnumber WHERE b.studentno IS NULL AND a.p_id = b.p_id

  3. Java中String做为synchronized同步锁

    synchronized (("" + userId).intern()) { // TODO:something } JVM内存区域里面有一块常量池,关于常量池的分配: JDK6 ...

  4. [转帖]Linux - NetworkManager网络管理工具

    Linux - NetworkManager网络管理工具 linux运维菜 发布时间:18-10-3020:32优质原创作者 简介 网络管理器(NetworManager)是检测网络.自动连接网络的程 ...

  5. [转帖]Nginx为什么高效?一文搞明白Nginx核心原理

    Nginx为什么高效?一文搞明白Nginx核心原理 咔咔侃技术 2019-09-06 15:37:00 https://www.toutiao.com/a6733057587622707724/ Ng ...

  6. K8S从入门到放弃系列-(3)部署etcd集群

    摘要:etcd 是k8s集群最重要的组件,用来存储k8s的所有服务信息, etcd 挂了,集群就挂了,我们这里把etcd部署在master三台节点上做高可用,etcd集群采用raft算法选举Leade ...

  7. PO,VO,DAO,BO,POJO之间的区别与解释

    VO value object:值对象 通常用于业务层之间的数据传递,由new创建,由GC回收. PO persistant object:持久层对象 对应数据库中表的字段. VO和PO,都是属性加上 ...

  8. STL标准模板库之vector

    目录 vector容器 1)什么是vector 2)如何定义 3)常用的Vector函数 1.容量函数 2.增加函数 3.删除函数 4.迭代器 5.访问函数 6.其他函数及操作 7.算法 STL提供了 ...

  9. Prime Time UVA - 10200(精度处理,素数判定)

    Problem Description Euler is a well-known matematician, and, among many other things, he discovered ...

  10. FishingMaster(HDU-6709)【贪心】

    题目链接:https://vjudge.net/problem/HDU-6709 题意:一个人要抓n条鱼,每抓一条鱼用时K,每烹饪一条鱼用时a[i],抓鱼的过程不能被打断,烹饪鱼的时候可以抓鱼,也可以 ...