从第一个HEAD响应中调用带有参数的GET请求

时间:2018-09-01 01:49:14

标签: javascript angular api http

在我的Angular应用中,我必须调用两个HTTP请求。第一个请求是HEAD,它在标头响应(记录总数)中返回重要参数。第二个请求是GET,当HTTP标头包含标头响应中的总记录数时,返回所有记录。

现在我有两个方法getHeader()和getData(records:number)。

this.appService.getHeader().subscribe(
  (response) => {
    const records = response.headers.get('X-Total');

    this.appService.getData(records).subscribe(
      (data) => {
        this.data = dataFromServer;
      }
    );

  }
);

效果很好,但是我想知道是否存在更优雅的解决方案?

1 个答案:

答案 0 :(得分:0)

如果您修改后端,显然会更简单,因此只需要一个请求。也就是说,如果没有选择,可以使用switchMap,如下所示:

import { switchMap } from 'rxjs/operators';

//...

this.appService.getHeader().pipe(
    switchMap(resp => this.appService.getData(resp.headers.get('X-Total')))
).subscribe(data => {
    this.data = data;
});