我正在使用 Angular 4.3.1 和 HttpClient。有一个 HttpInterceptor 来设置一些标头。
在某些 http get 请求中,我需要设置不同的标头。无论如何,我可以将一些参数传递给该特定 HttpRequest 的 HttpInterceptor 吗?
@Injectable()
export class MyHttpInterceptor implements HttpInterceptor {
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if(request.custom.param1) // how can i do this
request = request.clone({
setHeaders: {
'header1': 'xxxxxx'
}
});
else
request = request.clone({
setHeaders: {
'header2': 'yyyyyy'
}
});
return next.handle(request);
}
}
也许有更好的方法来处理这个问题,但作为解决方法,您可以创建并传递自定义HttpParams
请求然后在拦截器中检查它们。例如:
export class CustomHttpParams extends HttpParams {
constructor(public param1: boolean) {
super();
}
}
在 http 调用中使用此类:
this.http.get('https://example.com', {
params: new CustomHttpParams(true)
})
现在在拦截器中:
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (request.params instanceof CustomHttpParams && request.params.param1)
request = request.clone({
setHeaders: {
'header1': 'xxxxxx'
}
});
else
request = request.clone({
setHeaders: {
'header2': 'yyyyyy'
}
});
return next.handle(request);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)