首页 > 解决方案 > angular 5 httpclient ,在 post 上,响应不返回标头,只返回响应对象

问题描述

我最近搬到了 Angular 5 和更早的 http.post 返回响应对象的完整标题,但是使用 httpclient ,它不返回响应标题。我如何更改这部分帖子代码以提供完整的响应对象,包括响应标头

我读过有关使用 {observable: "response"} 的信息,但它不起作用

post(inURL,  data, config = undefined)  {
  let headers, options;
  if (config) {
    options = config;
  } else {
    //headers = this.getDefaultHeader();
    //options = new RequestOptions({ headers: headers });
    options = httpOptions;
  }

  let action = this.httpService.post(inURL,  data, options);
  return new Promise((resolve, reject) => {
    action.subscribe(
      response => resolve(response),
      error => {
        this.interceptError(error);
        reject(error);
      }
    );
  });    
}

标签: angularangular-httpclient

解决方案


我假设您有充分的理由promise从这里返回 a 而不是 Observable 。

话虽这么说,你在这里使事情复杂化了。您可以简单地调用toPromise()from 的返回值post

好吧,你说你用过{observable: "response"},但没用。那是因为你没有正确使用它。它应该是 {observe: "response"}不是 {observable: "response"}

它必须是选项的一部分。所以我使用了扩展运算符(...)并添加{observe: "response"}options.

试试这个:

post(inURL,  data, config = undefined)  {
  let headers, options;
  if (config) {
    options = config;
  } else {
    //headers = this.getDefaultHeader();
    //options = new RequestOptions({ headers: headers });
    options = httpOptions;
  }

  options = { ...options, observe: 'response' };

  this.httpService.post(inURL, data, options)
    .toPromise();
}

推荐阅读