2017-01-10 44 views
2

我想知道爲什麼以及如何處理成功與錯誤響應由Angular2的http模塊進行不同處理。Angular2 http錯誤vs成功響應,來自Express

例呼叫:

http.post(url, payload).map(response => response.json()).toPromise() 

我然後調用。然後上的承諾和路由到一個成功或Err函數,管道輸出到控制檯。我的問題是,響應得到所有有點和json格式爲成功的對象,但對於錯誤,我得到了大的gnarly完整的html響應。我希望能夠在下面的示例中訪問連接到響應_body的「errorMessageToUser」。什麼是最好的方法來完成?

.then(
    success => console.log("success", success), 
    err => console.log("error", err)) 

下面是在表達上的錯誤響應在這個例子中

return res.status(401).json({ errorMessageToUser: "some error message" }); 

生成錯誤代碼[問題的根源是,什麼是乾淨的方法來獲得在_body的內容?或另一種方式來傳回參數Express嗎?]

{ 
    _body: "{"errorMessageToUser":"some error message."}", 
    headers: Headers, 
    ok: false, 
    status: 401, 
    statusText: "Unauthorized"... 
} 

成功響應

{ group: "asdf", password: "asdf, "username: "asdf" } 

--end結果

我希望能夠去的errorMessageToUser一個錯誤的響應,現在唯一的辦法就是打開身體,轉換該字符串JSON,拉出的errorMessage,並帶關閉它的報價 - 非常髒

回答

1

作爲解決方案,我只是將statusText更改爲我想要的錯誤消息並將其路由到用戶的ui。

res.statusMessage = "custom error message to user"; 
    return res.status(401).end();