首页 > 解决方案 > REST web 服务可以返回异常吗?

问题描述

我正在从我的 Angular 应用程序调用 REST Web 服务来获取一个人的地址,如果它可用,那么我会收到如下所示的 json 响应,但如果没有地址(无数据),那么其余的 Web 服务(端点)返回 404 异常而不是而不是错误响应 JSON,所以我被迫将无数据场景作为订阅中的错误处理。是否正确的休息网络服务可以在没有数据的情况下返回异常?

{
  "@type": "PostalAddress",
  "addressLocality": "Colorado Springs",
  "addressRegion": "CO",
  "postalCode": "80840",
  "streetAddress": "100 Main Street"
}

标签: angularrest

解决方案


是否正确的休息网络服务可以在没有数据的情况下返回异常?

也许。

除了响应 HEAD 请求时,服务器应该发送一个包含错误情况解释的表示,以及它是暂时的还是永久的条件。-- RFC 7231

当服务器报告客户端错误 (4xx) 或服务器错误 (5xx) 时,该语言适用。

棘手的部分是“无数据”是否是错误部分取决于资源本身的性质。

例如,如果 GET 来自 google 的搜索结果的表示,并且该搜索没有匹配项,那么您通常看到的是一个200 OK状态,以及表示“未找到结果”之类的搜索结果的表示。

同样,如果您向 Web 服务器请求文档的副本,并且该文档是空的(零字节长),那么您通常会收到带有空有效负载的 200 OK 消息。

HTTP 告诉我们如何描述表示请求资源的有效负载,它告诉我们如何描述表示错误情况的有效负载,但它实际上并没有告诉您要发送什么响应。

作为 API 的使用者,您应该查看状态代码,并且通常还查看 HTTP 响应上的内容类型标头,以了解如何正确解释有效负载。


推荐阅读