2017-07-19 151 views
2

我有相當多的REST端點處理一個請求,並簡單地返回200.我注意到這是一個錯誤映射結果與json()。如果我嘗試不做任何映射,我會看到瀏覽器警告說它無法解析XML。由於沒有返回是很常見的,所以我很好奇我應該如何處理響應。Angular 2 - Http - 正確忽略空結果

這是一個基本的代碼示例:

await this.http.put("/api/some_url", data).toPromise(); 

這裏是在Firefox中顯示了警告:

XML Parsing Error: no root element found Location: http://localhost/api/some_url Line Number 1, Column 1: 

如果我嘗試使用json()圖,它完全炸燬。如果我什麼都不做或試圖映射到text(),我只是得到警告。

在所有情況下,響應頭包含Content-Length: 0,所以我很驚訝Angular2/Firefox試圖解析任何東西。我不知道這個警告是來自Angular2還是Firefox。我已經在Chrome和IE中試過了,並且沒有任何警告。所以我想知道它是否特定於Firefox。

回答

1

當沒有內容返回時,例如, return Ok()(HTTP狀態代碼200)在ASP.NET Core中,內容類型(自然)未指定,但Firefox假定響應爲XML並嘗試解析空文檔,從而導致以下控制檯錯誤:

XML Parsing Error: no root element found Location ...

指定return NoContent();(HTTP狀態碼204)使Firefox很開心(也適用於其他瀏覽器)。

問題被報道[email protected]

and a parsing failure will simply be logged to the web console instead.