我正在编写拦截器,这样我就不必处理调用我的 web api 的每个服务中的标头。问题在于,我 99% 的调用都需要一组特定的标头,但其他 1% 的调用只需要其中一个标头,并且无法与其他存在的标头一起使用。知道这一点后,我的想法是制作 2 个拦截器,第一个将添加他们都使用的 1 个标头,第二个将添加其余标头,第二个不包括 1%。
以下是我如何排除 1%,这是有效的,但我想看看是否有更好的方法来解决这个问题:
intercept(request: HttpRequest<any>, next:HttpHandler: Observable<HttpEvent<any>> {
let position = request.url.indexOf('api/');
if (position > 0){
let destination: string = request.url.substr(position + 4);
let matchFound: boolean = false;
for (let address of this.addressesToUse){
if (new RegExp(address).test(destination)){
matchFound = true;
break;
}
}
if (!matchFound){
...DO WORK to add the headers
}
}
原文由 dmoore1181 发布,翻译遵循 CC BY-SA 4.0 许可协议
我最后做的是有一个 url 数组(正则表达式格式),我不想像这样在拦截器中使用它们: