从get请求中检索响应头值

时间:2018-01-28 19:55:51

标签: angular rxjs angular5

我的.get请求检索标头值时遇到问题。

在我的API中我有Max-range:65 - 这些值告诉我DB中存在多少项。因为我通过10得到它们我知道服务器上存在多少项是非常重要的。我如何在我的请求中获取此信息?它看起来像:

在我的服务中,我有一个方法:

  public getRequest(params, refresh?: boolean): Observable<any> {
        const getUrl = '/coreapi/request';
        return this.http
            .get(getUrl, {params})
            .map((result: Obj[]) => {
                for (const item of result) {
                    const unit = new Test(
                        item.id,
                        item.value);

                    this.unitSet.push(unit);
                }
                return this.unitSet;
            });
    }

在组件中我订阅了这个:

    this.sub
        .do(() => {
            // do something
        })
        .distinctUntilChanged()
        .switchMap((data: any) => {
            return this.service.getRequest(data.httpParams, data.refresh);
        })
        .subscribe((result: Unit[]) => {
            this.units = result;
        });

----编辑

但我从12列表中只得到这个标题:

{"pragma" => "pragma"},
{"content-type" => "content-type"},
{"cache-control" => "cache-control"},
{"expires" => "expires"}

您知道如何获取自定义标题吗?

1 个答案:

答案 0 :(得分:0)

我找到了答案,但在Angular docs中并不清楚。

现在默认的http请求有默认选项:observe:&#39; body&#39;,因此响应不会返回标题。

获得身体和身体这个标题我们应该设置为&#39;响应&#39;。

所以在我的例子中我应该使用:

const observeVal = 'response'
return this.http
   .get(this.apiUrl + getCurses, {params: params, observe: observeVal})

默认为:

const observeVal = 'body'
return this.http
   .get(this.apiUrl + getCurses, {params: params, observe: observeVal})