Umi-request 创建多个request文件,但拦截器相互污染

需求

业务上的需要,request的配置上区别很大,所以建了两个request请求文件,对应的接口调用对应的request

问题

在两个文件的拦截器中log,会发现发起一个请求,两个拦截器都有进入

Code

两个文件不好演示,使用放在一个文件,建两个实例

	const http1 = extend();
	const http2 = extend();
	
	const responseInterceptor = response => {
	 console.log('hello world');
	 return response;
	};
	
	http1.interceptors.response.use(responseInterceptor);
	http2.interceptors.response.use(responseInterceptor);

当使用其中一个如 http2 发送请求后,console.log('hello world') 会执行两次。

解决方案

如果是想多个request的使用,那么意味着你想这些request各自独立

http1.interceptors.response.use(responseInterceptor, { global: false });

拦截器的第二个参数,带上{global:false}
注意!!没有带上这个参数的,依然会进入它的拦截器!
比如,
只有http1带了这个参数,
那么http2 的请求就不会进入http1的拦截器
但是 http1的请求,依然会进入http2的拦截器!

上一篇:netty系列之:使用netty实现支持http2的服务器


下一篇:Curl支持HTTP2