【问题标题】:angular httpclient post when returning 4xx error the error handler only contains OK, no json is parsed返回4xx错误时的角度httpclient帖子错误处理程序仅包含OK,不解析json
【发布时间】:2019-07-09 16:44:07
【问题描述】:

我在 .net core 2.1 中创建了一个 REST api,最初在 7 中创建了一个角前端,但最近升级到了 8。

我有几个 post 端点用于创建新项目(问题、答案、用户、应用程序等),这些端点将采用 json 对象,然后针对它们运行一些验证规则。如果规则成功,则将对象保存到数据库中,如果失败,则返回模型状态错误和 422(也尝试过 400)错误以及 json 响应,例如 {"Address":["请输入地址"],"TopLevelBudgetId":["请选择顶级预算"]}

但是错误总是“OK”

.订阅( () => { this.router.navigate([/administration/users]); }, 错误 => { 控制台日志(错误); }));

在邮递员中我可以看到正确的状态码 422 和如上所示的 json 模型状态。

我不知道我哪里出错了,遵循了各种角度教程,但还没有找到解决方案。

我可以在 chrome 工具的网络选项卡中看到它首先发送选项并返回 204,这是因为我机器上本地的站点位于不同的端口上,因此它正在处理 CORS,然后它会正确显示帖子422 状态码和响应。

为什么我在错误处理程序中只收到“OK”

【问题讨论】:

  • 欢迎来到 Stack Overflow!你认为这与 Angular 8 相关吗?
  • 我不这么认为,这就是我从 7 升级到 8 的原因,因为有完全相同的问题
  • 我想知道这是否与选项请求有关,因为它确实返回 204,我猜这是 OK 的原因。我原以为 HttpClient 会处理这个问题,然后解析实际的帖子。我需要自己处理吗?
  • 与我们分享您返回此 json 的代码。试试console.log(JSON.stringify(error.response.data));
  • 嗨,涛,当我尝试记录 error.response.data 时,我得到 ERROR TypeError: Cannot read property 'data' of undefined 错误只是“OK”而已。这包含在订阅的第二个 lambda 中,如原始帖子中所示

标签: angular asp.net-core error-handling


【解决方案1】:

所以这是我的一个小学生错误。我有一个拦截器来处理 401/403 身份验证错误并重定向到登录页面。

这是有问题的部分,没有意识到我有这个拦截器,因为它是在开发开始时添加的

常量错误 = err.error.message || err.statusText; 返回 throwError(错误);

更改为重新抛出异常

return throwError(err);

【讨论】:

    猜你喜欢
    • 2018-02-25
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 2011-10-02
    • 1970-01-01
    • 2012-06-11
    相关资源
    最近更新 更多