我想知道为什么以及如何通过Angular2的http模块以不同方式处理成功与错误响应有关。
示例电话:
// Build the connection string.
lstrFullConnectionString = @"Data Source =" + lstrDBPathAndFileName + "; Version=" + lstrDBVersion + "; New=" + lstrDBNew + ";";
mobjSQLCon = new SQLiteConnection(lstrFullConnectionString);
try
{// Fails at connection open....
mobjSQLCon.Open();
lblConnectionStatus.Text = "Status: Connected";
btnSQLiteConnect.Text = "Disconnect";
}
然后我调用.then对promise或路由到成功或错误函数,将输出管道输出到控制台。我的问题是,在成功期间,响应得到了所有有点和json格式化为我的对象,但是对于错误,我得到了大的粗糙的完整html响应。我希望能够访问" errorMessageToUser"在我的下面的例子中附加到响应的_body。什么是最好的完成方式?
http.post(url, payload).map(response => response.json()).toPromise()
此处的Express中的代码会在此示例中生成错误
.then(
success => console.log("success", success),
err => console.log("error", err))
关于错误响应[问题的根源是,什么是获取_body的内容的干净方式?,或者在Express中传回参数的另一种方式?]
return res.status(401).json({ errorMessageToUser: "some error message" });
成功回应
{
_body: "{"errorMessageToUser":"some error message."}",
headers: Headers,
ok: false,
status: 401,
statusText: "Unauthorized"...
}
- 最终结果
我希望能够在错误响应中找到errorMessageToUser,现在唯一的方法是打开body,将该字符串转换为json,拉出errorMessage,并删除它的引号 - 非常脏< / p>
答案 0 :(得分:1)
作为解决方案,我只是将statusText更改为我想要的错误消息,并将其路由到用户的ui。
res.statusMessage = "custom error message to user";
return res.status(401).end();