angular - REST web 服务可以返回异常吗?
问题描述
我正在从我的 Angular 应用程序调用 REST Web 服务来获取一个人的地址,如果它可用,那么我会收到如下所示的 json 响应,但如果没有地址(无数据),那么其余的 Web 服务(端点)返回 404 异常而不是而不是错误响应 JSON,所以我被迫将无数据场景作为订阅中的错误处理。是否正确的休息网络服务可以在没有数据的情况下返回异常?
{
"@type": "PostalAddress",
"addressLocality": "Colorado Springs",
"addressRegion": "CO",
"postalCode": "80840",
"streetAddress": "100 Main Street"
}
解决方案
是否正确的休息网络服务可以在没有数据的情况下返回异常?
也许。
除了响应 HEAD 请求时,服务器应该发送一个包含错误情况解释的表示,以及它是暂时的还是永久的条件。-- RFC 7231
当服务器报告客户端错误 (4xx) 或服务器错误 (5xx) 时,该语言适用。
棘手的部分是“无数据”是否是错误部分取决于资源本身的性质。
例如,如果 GET 来自 google 的搜索结果的表示,并且该搜索没有匹配项,那么您通常看到的是一个200 OK
状态,以及表示“未找到结果”之类的搜索结果的表示。
同样,如果您向 Web 服务器请求文档的副本,并且该文档是空的(零字节长),那么您通常会收到带有空有效负载的 200 OK 消息。
HTTP 告诉我们如何描述表示请求资源的有效负载,它告诉我们如何描述表示错误情况的有效负载,但它实际上并没有告诉您要发送什么响应。
作为 API 的使用者,您应该查看状态代码,并且通常还查看 HTTP 响应上的内容类型标头,以了解如何正确解释有效负载。
推荐阅读
- wordpress - 仅为登录用户显示帖子 - Wordpress
- java - 如何打印说明用户输入索引太大的错误消息?
- c++ - 如何返回包含 for 循环的素因子算法的结果?
- python - 将值作为公式而不是数据读取的问题
- c# - 使用 WPF 应用程序中的 UWP MediaCapture
- docker - 两个 docker 容器之间的连接
- java - 在空对象引用上颤振 java.io.File android.app.Activity.getExternalFilesDir(java.lang.String)'
- java - 在 Maven 上运行时出现 java.lang.NoClassDefFoundError
- linux - Linux 上的所有 tmpfs 实例是否共享同一个内存池?
- c# - 根据条件键从 ConcurrentDictionary 中删除多个项目