Дублировать базовый URL при создании служб с помощью службы перехвата - PullRequest
0 голосов
/ 10 февраля 2020

Прежде всего, я прошу прощения, если я не объясняю проблему так, как должен, но я немного запутался.

Я работаю над проектом, и базовый URL или URL среды задан в InterceptService, но проблема заключается в том, что когда я вызываю определенный http request в определенном service имя домена URL запроса дублируется, и это вызывает Error 404 not found, я попытался проверить, как построен URL-адрес, и все выглядит нормально. Другие запросы в других службах работают нормально, даже если они построены из того же перехватчика, как я считаю

. Вы можете посмотреть на снимок экрана ниже, чтобы увидеть результат:

Screen shot of the failed request

Вот метод перехвата в 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 в environment.ts выглядит нормально, как показано ниже:

export const environment = {
production: false,
apiUrl: 'http://localhost:5100',
isMockEnabled: false,
authTokenKey: '......'

} ;

1 Ответ

0 голосов
/ 10 февраля 2020

Вы повторяете URL при клонировании запроса.

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

${environment.apiUrl}/${request.url} должно быть request.url

Вы клонируете запрос, чтобы добавить заголовки, но URL-адрес запроса уже полностью определен вашим кодом, который вначале установил его как http://localhost:5001/api/countries

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...