Angular 6在http拦截器中获取请求自定义参数

问题描述 投票:0回答:1

我正在尝试从拦截器中的http请求中检索自定义参数。我需要这个来显示或不显示错误消息。我用这种方式设置了一个自定义参数:

getTickets(): Observable<Ticket> {
    var params = new HttpParams();
    params.append('showErrorMessage', 'false'); 
    return this.http.get(Conf.BaseUrl + 'tickets', { params: params });
}

我试图在我的拦截器中获得参数:

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(req).pipe(
        tap(
            (event: HttpEvent<any>) => {
               let show = req.params.get('showErrorMessage');
               ...
            }
         )
    )
}

在req.params中没有我的自定义参数,所以我认为这不是设置和获取请求参数的正确方法。有什么建议?谢谢

编辑:为了避免混淆,我改变了我的问题,我希望更清楚。我应该设置一个调用服务方法的参数,并让拦截器能够获得这个参数。有没有办法做到这一点?在http请求期间是否可以将参数从服务传递到拦截器?我试图使用HttpHeaders和HttpParams,但它不起作用。

求助了我找到了解决方案。我不知道原因,但使用params变量,因为HttpParams不起作用。相反,它以这种方式工作:

getTickets(): Observable<Ticket> {
    return this.http.get(Conf.BaseUrl + 'tickets', {
        headers: {
            showErrorMessage: 'false'
        });
}

在拦截器中:

...
    tap(
        (event: HttpEvent<any>) => {
            let show = req.headers.get('showErrorMessage');
               ...
        }
    )
...

我得到了http请求中设置的值。

angular http rxjs
1个回答
1
投票

实际上你可以通过直接调用它来获得它

let show = req.params.get.showErrorMessage;

要么

let show = req.params.get.['showErrorMessage'];

你可以console.log(req.params)看看你在那里有什么。让我知道

© www.soinside.com 2019 - 2024. All rights reserved.