angular 5 httpclient ,在 post 上,响应没有 return headers,只有 return 响应 object

angular 5 httpclient , on post , the response does not return headers, only returns response object

我最近搬到了 angular 5 之前 http.post 是 returning 响应 objecta s complete with headers 但是使用 httpclient ,它不会 return 响应 headers。我如何更改 post 代码的这一部分以提供完整的响应 object 包括响应 headers

我读到有关使用 {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);
      }
    );
  });    
}

我假设您有充分的理由 return promise 而不是此处的 Observable。

话虽这么说,你让这里的事情复杂化了。您可以简单地在 post.

的 return 值上调用 toPromise()

好吧,你说你使用了 {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();
}

您可以在进行 HTTP 调用后 return HttpClient 响应:

getServiceData(): Observable<any>{
      return this.httpClient
        .post(myUrl, requestBodyObj)
        .map((httpResponse: any) => {
            if (httpResponse.operationStatus.statusCode === '0') {
                return httpResponse.data;
            } else {
                throw new Error('error in service call');
            }
        })

 }     

在你的组件中class你可以订阅服务方法:

myService.subscribe( (data) => {
      // do something with data received
    }, error => {
      // do something when error 
    })

有关 HttpClient 用法的更多详细信息,请参阅 seen here 官方指南