簡體   English   中英

angular 5 httpclient,在post上,響應不返回標題,僅返回響應對象

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

我最近移到了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);
      }
    );
  });    
}

我假設您有很大的理由從這里返回promise而不是Observable。

話雖這么說,您正在使事情復雜化。 您可以簡單地從post的返回值調用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調用后僅返回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');
            }
        })

 }     

在您的組件類中,您可以訂閱service方法:

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

有關HttpClient使用情況的更多詳細信息,請參見官方指南

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM