Angular 6 Interceptor выполняется сотни раз - PullRequest
0 голосов
/ 05 сентября 2018

В моем приложении Angular 6 я установил перехватчик, потому что мне нужно перенаправить вызовы API, которые идут в другой домен.

Часть этого - создание нового URI.

Вот код перехватчика.

import { Injectable } from "@angular/core";
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpClient } 
from "@angular/common/http";
import { Observable } from "rxjs/Rx";


@Injectable()
export class Interceptor implements HttpInterceptor {
    constructor(private http: HttpClient){}
    intercept(req: HttpRequest<any>, next: HttpHandler): 
Observable<HttpEvent<any>> {



    // Clone the request to add the new header.
    const authReq = req.clone({ headers: req.headers.set("headerName", 
   "headerValue")});
    if(authReq.url.search('MS/')!=1){

        var url = 'api/RequestHandler/?uri=' + authReq.urlWithParams;
        this.http.get(url).subscribe(
            success =>{
            console.log("Succefully completed");
            }
        )

        console.log("Sending request with new header now ...");

        //send the newly created request
        return next.handle(authReq)
        .catch((error, caught) => {
        //intercept the respons error and displace it to the console
        console.log("Error Occurred");
        console.log(error);
        //return the error to the method that called it
        return Observable.throw(error);
        }) as any;
      }
    }
}

То, что я вижу, - это код перехватчика, выполняемый сотни раз, и каждый раз, когда происходит конкатенация URI, у меня появляются сотни запросов, которые выглядят следующим образом.

http://localhost/mywebapplication/api/RequestHandler/? 
uri=api/RequestHandler/?uri=api/RequestHandler/? 
uri=MS/MappingServicesWebAPIIntegrated/api/myApicontroller? 
Year=2018

при каждом последующем вызове добавляется дополнительный "? = URI апи / RequestHandler / "

и только 1 правильный вызов "http://localhost/mywebapplication/api/RequestHandler/? = URI МС / MappingServicesWebAPIIntegrated / API / myApicontroller? Год = 2018"

Как мне остановить повторяющиеся вызовы, которые перехватчик получает и создает неправильные URL-адреса?

...