Пропустить http-перехватчики для всех запросов GET - PullRequest
1 голос
/ 31 мая 2019

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

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

Я хочу отображать только когда пользователь делает запрос вручную

import { Jsonp } from '@angular/http';
import { HttpInterceptor, HttpHandler, HttpRequest, HttpEvent, HttpResponse, HttpErrorResponse } from '@angular/common/http';
import { Injectable } from "@angular/core"
import { Observable } from "rxjs";
import { tap, catchError } from "rxjs/operators";
import { ToastrService } from 'ngx-toastr';
import { of } from 'rxjs/observable/of';

@Injectable()

export class AppHttpInterceptor implements HttpInterceptor {
    constructor(public toasterService: ToastrService) { }
    intercept(
        req: HttpRequest<any>,
        next: HttpHandler
    ): Observable<HttpEvent<any>> {
        return next.handle(req).pipe(
            tap(evt => {
                if (evt instanceof HttpResponse && evt.body && evt.body.success) {
                    // this.toasterService.success(evt.body.success.message, evt.body.success.title);
                    this.displayToast(evt.body)
                }
            }),
            catchError((err: any) => {
                if (err instanceof HttpErrorResponse) {
                    try {
                        // this.toasterService.error(err.error.message, err.error.title);
                        this.displayToast(err.error)
                    } catch (e) {
                        // this.toasterService.error('An error occurred', '');
                        this.displayToast(err.error)
                    }
                    //log error 
                }
                return of(err);
            }));

    }

    displayToast(response) {
        let message = response.message;

        if (response.code == 200) {
            this.toasterService.success('success');
        } else if (response.code == 201) {
            this.toasterService.success(message, 'Created');
        } else if (response.code == 400) {
            this.toasterService.error(message, 'Bad Request');
        } else if (response.code == 401) {
            this.toasterService.warning(message, 'Unauthorized');
        } else if (response.code == 403) {
            this.toasterService.warning(message, 'Forbidden');
        } else if (response.code == 404) {
            this.toasterService.warning(message, 'Not Found');
        } else if (response.code == 409) {
            this.toasterService.error(message);
        } else if (response.code == 411) {
            this.toasterService.info(message, 'No Records');
        } else if (response.code == 500) {
            this.toasterService.error(message, 'Internal Server Error');
        } else if (response.code == 503) {
            this.toasterService.error(message, 'Service Unavailable');
        }
    }

}

1 Ответ

1 голос
/ 31 мая 2019

Вы можете определить метод запроса по req.method

Попробуйте это:

requestMethod = req.method

if(requestMethod != "GET" {
  this.displayToast(err.error)
} 
...