Angular2 http错误vs成功响应,来自Express

时间:2017-01-10 17:44:32

标签: json angular express

我想知道为什么以及如何通过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>

1 个答案:

答案 0 :(得分:1)

作为解决方案,我只是将statusText更改为我想要的错误消息,并将其路由到用户的ui。

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