axios请求及响应拦截

对于一次http请求简单来讲,就两个过程(非http建立连接过程),一是将前端请求发送到后端,二是将后端处理后的数据拿到。那么在请求发送之前,以及数据返回之后,我们都可以对请求的结构以及返回的数据做一个处理,然后在将请求发给后端(如在请求头中增加token),如果是后端返回数据,则可以根据状态码来进行提前的一个提示。以下就对axios封装的代码做一个简单的介绍。

对axios进行基础配置

import axios from 'axios';  // 该处引入axios模块

// 构建axios实例
const instance = axios.create({
	baseURL: process.env.BASE_API,  // 该处url会根据开发环境进行变化(开发/发布)
	timeout: 10000  // 设置请求超时连接时间
})

request拦截器(请求发送后端之前)

instance.interceptors.request.use(
	config => {
		console.log(config);  // 该处可以将config打印出来看一下,该部分将发送给后端(server端)
		config.headers.token = '该处可设置token内容';
		return config  // 对config处理完后返回,下一步将向后端发送请求
	},
	error => {  // 当发生错误时,执行该部分代码
	    console.log(error); //调试用
	    return Promise.reject(error)
	}
)

response拦截器(数据返回后,具体页面加载之前)

instance.interceptors.response.use(
	response => {  // 该处为后端返回整个内容
		const res = response.data;  // 该处可将后端数据取出,提前做一个处理
		if ('正常情况') {
			return response  // 该处将结果返回,下一步可用于前端页面渲染用
		} else {
			alert('该处异常');
			return Promise.reject('error')
		}
	},
	error => {
		console.log(error),
		return Promise.reject(error)
	}
)

将axios实例导出,方便其他页面调用

export default instance

其他页面调用上述实例发送请求

import instance from '../xxx.js';  // 将实例导入
const qs=require('qs');  // 用于处理前端发送数据格式
const base = process.env.BASE_URL;  // 该处根据开发环境变化

export const login = params => {return instance.post(`${base}/login`, qs.stringify(params)).then(res => res.data)}  // 该处即可实现向后端发送请求,并将数据返回给调用该接口的位置

如果对大家有帮助的话,欢迎点赞?

  • 11
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值