[小程序开发] 响应请求拦截器对token进行验证

一、创建WxResquest类


// 通过类的方式来进行封装,会让代码更具有复用性,也可以方便添加新的属性和方法
class WxResquest{

	// 定义实例属性,用来设置默认请求参数
	defaults={
		baseURL:'',//请求基准地址
		url:'',//接口的请求路径
		data:null,//请求参数
		method:'GET',//默认的请求方法
		//请求头
		header:{
			'Content-type':'application/json'//设置数据的交互格式
		},
		timeout:60000//默认的超时时长,小程序默认的超时时长是1分钟
	}

	// 定义拦截器对象
	// 需要包含请求拦截器以及响应拦截器,方便在请求之前以及响应以后时进行逻辑处理
	interceptors={
		// 请求拦截器
		// request方法,在请求发送之前,对请求参数进行新增或修改
		request:(config) => config,

		// 响应拦截器
		// response方法,在服务器响应数据以后,对响应的数据进行逻辑处理
		reponse:(response) => response
	}

	// 用于创建和初始化类的属性以及方法
	// 在实例化时传入的参数,会被constructor形参进行接收
	constructor(params={}){
		// 通过Object.assign方法合并请求参数
		// 注意:需要传入的参数,覆盖默认的参数,因此传入的参数需要放到最后
		this.defaults = Object.assign({},this.defaults,params)
	}
	// request实例方法接收一个对象类型的参数,属性值和wx.request方法调用时传递的参数保持一致
	request(options){

		// 需要先合并完整的请求地址(baseURL+url)
		options.url = this.defaults.baseURL + options.url
		// 合并请求参数
		options={...this.d
### 微信小程序中实现请求拦截器响应拦截器的方法 为了提升微信小程序中的 HTTP 请求管理效率增强灵活性,可以通过自定义封装 `wx.request` 来创建请求拦截器响应拦截器。这不仅有助于统一处理请求前后的逻辑,还能简化错误管理和状态码的集中处理。 #### 封装基础请求函数 首先构建一个基本的请求函数,此函数将作为所有外部调用的基础[^2]: ```javascript function request(options) { const { url, method = 'GET', data = {}, header = {} } = options; return new Promise((resolve, reject) => { wx.request({ url, method, data, header, success(res) { resolve(res); }, fail(error) { reject(error); } }); }); } ``` #### 添加请求拦截功能 接着,在实际发出请求之前加入预处理器,允许修改即将发送的数据或附加额外的信息到头部字段等操作。这里展示了一个简单的例子,其中包含了对每次请求自动添加 token 的机制[^4]: ```javascript let _request = function (options) { // 请求拦截器 let defaultHeader = {}; if (getToken()) { // 假设有一个获取token的方法 Object.assign(defaultHeader, {'Authorization': getToken()}); } options.header = {...defaultHeader, ...options.header}; console.log('Request Interceptor:', options); return request(options).then(response => response); }; ``` #### 构建响应拦截能力 对于接收到的服务端反馈,则可通过响应拦截器来进行初步解析或是异常捕获等工作。下面是一段用于验证服务器返回的状态码是否正常的代码片段[^5]: ```javascript _request = async function (options) { try { let response = await _request(options); // 响应拦截器 if (!response.statusCode || ![200].includes(response.statusCode)) { throw new Error(`Server responded with status code ${response.statusCode}`); } console.log('Response Interceptor:', response); return response.data; } catch (error) { console.error('Error occurred during the request:', error.message); throw error; } }; ``` 以上就是关于如何在微信小程序内建立请求响应拦截器的具体实践方案。通过这种方式不仅可以更好地控制整个通信过程,同时也提高了代码可读性和维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值