如果数据是html,如何使用Angular http返回错误

How to return an error with Angular http if the data is html?

本文关键字:Angular http 返回 错误 何使用 数据 html 如果      更新时间:2023-09-26

我正在使用Angular的http函数来访问我的远程API服务。

目前,我的 API 服务处于离线状态,如果用户尝试访问它,它仍然会抛出 200 状态,该状态在 Angular 中为"正常"。因此,始终调用我的成功回调而不是错误回调。奇怪的是,如果我使用 REST 客户端,例如 POSTman,它的状态为 404?

这是我调用我的 API 的函数(使用 jQuerys $.param() 函数进行 URL 友好的帖子参数(:

$http({
  method: 'POST',
  url: "http://mydomain/api/login",
  data: $.param({
     username: "test",
     password: "test"
  }),
  headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).then(successCallback(response), errorCallback(response));

以下是它在记录时给出的响应:

{data: "
↵<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN…r at [my ip address] Port 80</address>↵</body></html>↵", status: 200, config: Object, statusText: "OK"}

API 工作时的响应通常类似于:

{
  data: {
    id: 123
  },
  status: 200,
  config: object,
  statusText: 'ok'
}

当然,我可以在这里做一些狡猾的事情,例如编写一个 http 拦截器来检查data是否属于 object 类型,但这并不是我在这里寻找的真正答案,因为我的一些 API 调用只返回一个布尔值。

我还尝试将"内容类型"更改为"应用程序/json",但没有运气。

如果我的 API 关闭,我需要使用我的错误回调。有没有一个优雅的解决方案?

这一切听起来有点笨拙,我能想到的最合适的方法是从 API 端点发送 404/500,直到它上线。

否则,请尝试设置Accept标头:

{
    'Content-Type': 'application/x-www-form-urlencoded',
    'Accept': 'application/json'
}