Перехват http и добавление заголовков - IONIC - PullRequest
0 голосов
/ 20 января 2020

Я запускаю приложение Ioni c 4, которое содержит перехватчик http для добавления некоторой загрузки между запросами.

У меня также есть служба учетных данных, которая проверяет, есть ли токен в моем хранилище или нет.

это мой перехватчик

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        this.requests.push(req);
        this.loaderService.isLoading.next(true);
        return new Observable(observer => {
            const subscription = next.handle(req)
                .subscribe(
                    event => {
                        if (event instanceof HttpResponse) {
                            this.removeRequest(req);
                            observer.next(event);
                        }
                    },
                    (err: Error ) => {
                        this.alertservice.info(err.message, 'id1');
                        this.removeRequest(req);
                        observer.error(err);
                    },
                    () => {
                        this.removeRequest(req);
                        observer.complete();
                    });
            // remove request from queue when cancelled
            return () => {
                this.removeRequest(req);
                subscription.unsubscribe();
            };
        });
    }

Это работает, но когда я пытаюсь добавить следующие строки, он перестает работать и перенаправляет на страницу ошибки и ничего не утешает, я не могу отследить.

    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        //console.log(this.credentialService.credentials.token);
        // console.log(authToken);

Может кто-нибудь помочь мне понять, почему это происходит и как это исправить?

1 Ответ

0 голосов
/ 20 января 2020

Я только что понял и чувствую себя глупо,

this.credentialService.credentials был нулевым, так как до входа в систему его нет, поэтому перехватчик отправляет меня в раздел ошибок, чтобы исправить, я сначала проверяю, если он не нулевой , затем добавьте заголовки правильно:

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        let clonedReq: any;
        if (this.credentialService.credentials !== null) {
            const authToken = this.credentialService.credentials.token;
            clonedReq = req.clone({headers: req.headers.set('Authorization', authToken)});
        } else {
            clonedReq = req.clone({headers: req.headers.delete('Authorization')});
        }
    {...}

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