Angular 使用intercept服务生成服务时重复基本URL

Angular 使用intercept服务生成服务时重复基本URL,angular,angular8,Angular,Angular8,首先,如果我没有像我应该解释的那样解释这个问题,我很抱歉,但是我有点困惑 我正在处理一个项目,基本Url或环境Url是在拦截服务中设置的,但问题是当我在某个服务中调用某个http请求时,请求Url域名被复制,这会导致一个错误404 not found我试图检查Url是如何构建的,并且一切似乎都很好。其他服务中的其他请求工作正常,即使它们是从我相信的同一个拦截器生成的 您可以查看下面的屏幕截图以查看结果: 以下是InterceptService intercept( reques

首先,如果我没有像我应该解释的那样解释这个问题,我很抱歉,但是我有点困惑

我正在处理一个项目,基本Url或环境Url是在
拦截服务中设置的
,但问题是当我在某个
服务中调用某个http
请求
时,请求Url域名被复制,这会导致一个
错误404 not found
我试图检查Url是如何构建的,并且一切似乎都很好。其他服务中的其他请求工作正常,即使它们是从我相信的同一个拦截器生成的

您可以查看下面的屏幕截图以查看结果:

以下是
InterceptService

    intercept(
    request: HttpRequest<any>,
    next: HttpHandler
): Observable<HttpEvent<any>> {


    if (request.url.indexOf('/assets/') > -1) {
        return next.handle(request);
    }

    let me = this;
    var token = '';

    //this.authService.tokenVal.subscribe(val => {
    //  // need this basic auth for login request
    //  token = `Bearer ${val}`
    //});
    request = request.clone({
        setHeaders: {
            Authorization: token
        },
        url: `${environment.apiUrl}/${request.url}` 
    });

    return next.handle(request).pipe(
        tap(
            event => {
                 if (event instanceof HttpResponse) {
                }
            },
            error => {
                console.error(error.status);
                console.error(error.message);
            }
        )
    );

})

克隆请求时正在重复url

request = request.clone({
  setHeaders: {
    Authorization: token
  },
  // url: `${environment.apiUrl}/${request.url}`  NOT THIS
  url: request.url // THIS
});
${environment.apirl}/${request.url}
应为
request.url


您正在克隆请求,以便可以添加标题,但是请求url本身已经由您的代码完全定义,该代码将其设置为
http://localhost:5001/api/countries
首先

这将端口更改为4200,我想使用后端5100端口。另外,我想知道为什么它可以很好地处理其他服务中的其他请求?这很奇怪,或者我遗漏了什么。但是你的截图显示了url
http://localhost:5100/http://localhost:5100/api/countries
。如果这是来自
${environment.apirl}/${request.url}
,那么我认为
environment.baseUrl
http://localhost:5100
,您的http请求看起来类似于http.get(`${environment.baseUrl}/api/countries`)
。这意味着request.url是
http://localhost:5100/api/countries
这让我很困惑。在另一个服务中,基本url以相同的方式构建,但请求是正确的。我不认为答案就在你的答案里。
request = request.clone({
  setHeaders: {
    Authorization: token
  },
  // url: `${environment.apiUrl}/${request.url}`  NOT THIS
  url: request.url // THIS
});