首页 > 解决方案 > 如果在 Rest Api 调用中没有从数据库中找到数据,则返回哪个 HTTP 状态代码

问题描述

好吧,我有一个在 Spring Boot 中开发的微服务,它调用外部数据库来获取结果,但现在有时它无法从外部数据库中获取结果,因为数据库本身没有数据,因为存在选择性查询从微服务触发以从数据库中获取结果,所以在这些情况下,我应该返回正确的 http 状态码,我应该返回 http 状态码 204。请告知。

标签: javarest

解决方案


我应该返回 http 状态码 204

我目前的想法是“可能不会”。204 No Content的规范中包含此注释:

204 响应允许服务器指示该操作已成功应用于目标资源,同时暗示用户代理不需要遍历其当前“文档视图”(如果有)。

如果您有一个返回空文档的 GET 请求,我更喜欢Content-Length为 0的200 OK 。

选择 2xx 还是 4xx 取决于您在响应正文中包含哪些信息:在 GET 的情况下,如果您要返回资源的表示,那么您应该返回 200。如果您要返回文档描述错误,您应该返回 4xx 代码之一。

其中哪个是正确答案将取决于您的资源模型。搜索不返回任何结果是完全合理的;在这种情况下,返回空结果集的表示将需要 200。如果缺少数据意味着(语义)所请求的资源不存在(或更准确地说,没有当前表示),那么您应该返回 404。

REST 不会告诉您其中哪些是“正确的”——它只是为我们提供了一种通用语言,用于描述我们选择的替代方案,通用组件可以理解正在发生的事情。


推荐阅读