簡體   English   中英

從 Angular Observable 中的響應中刪除標頭

[英]Removing headers from response in Angular Observable

使用 AWS DynamoDB 將一些電影 JSON 數據返回到我的應用程序。 可以有多部電影,所以我需要使用一個數組並遍歷它來顯示我的電影列表。 但是,我收到一條錯誤消息,指出僅允許使用 arrays 和可迭代對象。

錯誤 1

我還控制台記錄了響應,如下所示。

回復

如您所見,我的回復有正文和標頭,我的 http 請求需要標頭以防止 cors 問題,但我現在真的很難將數據分解為項目。 我正在使用名為 IFilm[] 的可觀察對象從 Lambda function 檢索數據。

電影服務

以上是我的服務代碼,它將數據通過管道傳輸到我的儀表板組件。

儀表板組件

在這個 function 中填充的 filmList 是我嘗試使用 *ngFor 在我的 html 中迭代的內容。 當嘗試在響應中使用 use.body 或類似內容時,我收到此錯誤。

身體不存在

我覺得我已經快要破解這個了,所以任何建議都將不勝感激,如果需要任何澄清,請問:)

謝謝。

[編輯以防有人提出這個建議]

我也嘗試在 my.subscribe 中使用 next, complete, error 但沒有成功。

不

[編輯2]

所以我嘗試使用 response['body'] 並收到了這條消息。

錯誤

我也嘗試使用第二個建議,稍微改變了一些東西,但現在變得很奇怪了。

詭異的

[編輯 3]

抱歉我的錯誤,我錯過了其中一個更改。 我的服務現在沒有紅線,但是關於缺少長度、pop、concat 的錯誤已移至我的儀表板組件。

在此處輸入圖像描述

[編輯4]

修復它,對於任何未來的讀者,這就是我所做的。 當 API 調用我的 Lambda function 時,我必須返回標頭和正文。 我試圖獲取此數據並將其(標頭和正文)傳遞到我的 IFilm model 中。相反,我需要做的是創建一個 IResponse model,解析其中的一些數據,然后使用我的填充我的 IFilm[]我響應。

響應 電影

下面是我的儀表板組件中用於填充我的 IFilm 數組的代碼。

獲取電影

為什么要使用新的 HttpClient() 設置 _http? 如果您將 HttpClientModule 放入 AppModule 導入數組,它就會被依賴注入注入。

您還指定了通用返回類型 IFilm[],因此如果您返回帶有主體參數和其中的 IFilm[] 的 HttpResponse,則必須指定為 HttpResponse<IFilm[]>。 所以實際代碼是:

this._http.get<HttpResponse<IFilm[]>>(...)

加上 getFilmList 的返回值應該是 Observable<HttpResponse<IFilm[]>>。 更多關於 HttpResponse 的信息: https://angular.io/api/common/http/HttpResponse

[Update] 那么如果你更新了,你可以通過response.body獲取影片。

this.filmList = response.body;

暫無
暫無

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

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