java - 如果在 Rest Api 调用中没有从数据库中找到数据,则返回哪个 HTTP 状态代码
问题描述
好吧,我有一个在 Spring Boot 中开发的微服务,它调用外部数据库来获取结果,但现在有时它无法从外部数据库中获取结果,因为数据库本身没有数据,因为存在选择性查询从微服务触发以从数据库中获取结果,所以在这些情况下,我应该返回正确的 http 状态码,我应该返回 http 状态码 204。请告知。
解决方案
我应该返回 http 状态码 204
我目前的想法是“可能不会”。204 No Content的规范中包含此注释:
204 响应允许服务器指示该操作已成功应用于目标资源,同时暗示用户代理不需要遍历其当前“文档视图”(如果有)。
如果您有一个返回空文档的 GET 请求,我更喜欢Content-Length为 0的200 OK 。
选择 2xx 还是 4xx 取决于您在响应正文中包含哪些信息:在 GET 的情况下,如果您要返回资源的表示,那么您应该返回 200。如果您要返回文档描述错误,您应该返回 4xx 代码之一。
其中哪个是正确答案将取决于您的资源模型。搜索不返回任何结果是完全合理的;在这种情况下,返回空结果集的表示将需要 200。如果缺少数据意味着(语义)所请求的资源不存在(或更准确地说,没有当前表示),那么您应该返回 404。
REST 不会告诉您其中哪些是“正确的”——它只是为我们提供了一种通用语言,用于描述我们选择的替代方案,通用组件可以理解正在发生的事情。
推荐阅读
- jquery - 错误:“未捕获的类型错误:无法读取未定义的属性‘顶部’”
- python - 在pycharm IDE中使用python将sql输出到pandas数据框
- javascript - Canvas 2D fillStyle 有时不会更新颜色
- javascript - 创建一个简单的 Dice 对象,界面中没有可用的静态“sides”属性
- vue.js - vue-cli 项目中的较少加载程序
- python - 启动新项目时,迁移依赖项引用不存在
- vue.js - 在 nuxt.js 中集成 oraclejet
- android - Andorid自定义视图`onMeasure`未设置所需的宽度和高度
- mysql - 非常基本的命令的sql语法错误?为什么?
- java - 如何并行连续递增多个 RecyclerView 值