RestController 的最佳实践是什么?

2023-12-25

代码约定表明控制器中没有逻辑。一切都应该在服务层处理。我的问题特别是关于返回 ResponseEntity。

应该在RestController中处理还是在Service层中处理?

我两种方法都尝试过。我认为 RestController 是返回 ResponseEntity 的合适地方。因为我们在 RestController 中使用映射。

另一方面,我们知道控制器不应该包含任何逻辑。

@GetMapping("/{id}")
public ResponseEntity<Employee> getEmployee(@PathVariable Long id) {
    return ResponseEntity.ok(employeeService.findEmployeeById(id);
}

or

@GetMapping("/{id}")
public ResponseEntity<Employee> getEmployee(@PathVariable Long id) {
    return employeeService.findEmployeeById(id);
}

针对异常处理的 ControllerAdvice 是我的另一个关注点。使用哪种方式最好?

感谢您的提前。


代码约定表明控制器中没有逻辑。

并不真地。代码约定规定每一层都必须执行其负责的逻辑。
计算结果、检索请求所请求/需要的数据显然不是其余控制器的工作,而是发送 http 响应,返回什么ResponseEntity做是它的工作。所以这看起来是正确的方法:

@GetMapping("/{id}")
public ResponseEntity<Employee> getEmployee(@PathVariable Long id) {
    return ResponseEntity.ok(employeeService.findEmployeeById(id);
}

If the ResponseEntity由您的服务生成,您的服务将与 Http 层耦合。不可取,并且会降低其作为服务的可重用性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RestController 的最佳实践是什么? 的相关文章

随机推荐

  • 伪类和伪元素有什么区别?

    有什么区别div after and div after 我们什么时候必须使用 over 双冒号和单冒号表示法是区分的 伪类和伪元素 上述说法的实际含义是什么 From https developer mozilla org en US d
  • 如何在 Markdown 标记中缩进几行?

    我想写几行文字 它们的格式应正常 但每行应从第六列开始 IE 我不希望代码块格式化规则使这块文本看起来像代码 因为我将使用其他格式 如粗体等 如何在 Markdown 中做到这一点 Markdown 的原生功能无法做到这一点 然而 mark
  • Xcode 9 - 测试目标 X 遇到错误(无法连接到测试管理器)

    我正在尝试运行一些单元测试 但它一直给我错误 Showing Recent Issues Test target X encountered an error Unable to connect to test manager on d73
  • 使用什么算法来计算校验位?

    使用什么算法来计算数字列表的校验位 列表的长度在 8 到 12 位数字之间 也可以看看 如何生成验证码 号码 https stackoverflow com questions 46231 how to generate a verific
  • Firebase HTTP v1 API 不再批量发送?

    我收到了一封来自 Google 的电子邮件 通知我以下服务即将停用 在对 FCM 的单个 HTTP 请求中包含多个发送请求 称为批量发送 推荐的方法是 通过 HTTP v1 API 发送消息 该 API 已针对扇出性能进行了优化 在本页面
  • Symfony2 twig 翻译 {% trans %} 标签中的变量值

    我正在开发一个 Symfony2 项目并有一个问题 合而为一twig模板我从控制器收到一个变量 这是一个字符串 我需要翻译它 但语法 trans post name endtrans 返回错误 消息必须是 中的简单文本 那么有没有办法翻译变
  • C++0x 原子模板实现

    我知道英特尔的 TBB 中存在类似的模板 除此之外我在 google 或 Boost 库中找不到任何实现 您可以在 boost 中找到有关此功能实现的讨论 http lists boost org Archives boost 2008 1
  • 使用 htaccess 从特定文件夹中删除 SSL 集成

    我的整个网站都集成了 SSL 并放置了 htaccess 代码 以便在任何人访问我的域 URL 时重定向到 https 但我想将一个文件夹保留在 https 重定向之外 请帮我解决这个问题 下面是放置在我的根目录中的 htaccess 代码
  • 使用 pandas.merge_asof 进行全外连接

    您好 我需要将一些时间序列数据与最近的时间戳对齐 所以我认为pandas merge asof可能是一个很好的候选人 但是 它没有设置选项how outer 就像标准中一样merge method 一个例子可以是 df1 Value1 Ti
  • form_for 中 :model 和 @model 的区别?

    使用 form for 以下方式有什么区别 and 使用 user 是否会自动对 URL 操作使用 CRUD 方法 如果你只是给出一个模型实例 例如 user如果不指定操作 如第一个
  • Django:删除关系末尾时不会触发 m2m_changed

    NOTICE 由于生产环境限制 我必须坚持django 1 4暂时 我刚刚做了一个测试 看看当 ManyToMany 发生变化时是否可以挂钩事件 我有一个Group模型可容纳多个Item对象 每当任何组中的项目发生变化时 我都想对相关的 G
  • 将 CGPathRef 转换为 NSBezierPath

    在 Apple 文档中 他们为您提供了如何将 NSBezierPath 转换为 CGPathRef 的代码 我需要以相反的方式进行转换 从 CGPathRef 转换为 NSBezierPath UIBezierPath 有一个名为 cgPa
  • Azure 混合连接管理器不起作用

    要求 我有一个本地部署SQL服务器 and an Azure 网络应用服务需要互相交谈 我在另一台计算机上安装了混合连接管理器 该计算机与 SQL 服务器位于同一 LAN 中 我们将此计算机称为连接电脑 工作部分 安装和配置非常简单 混合连
  • 在officeR的body_add_table()函数中更改字体大小和样式

    我正在尝试更改官员表格中的字体大小body add table 功能 但没有成功 我怎样才能做到这一点 我正在使用以下代码 body add table my doc value tab02 style table template fon
  • CFFILE - 使用组件上传文件

    我有一个表单 我想提交给组件进行处理 CRUD 行为 问题是似乎将多部分 表单数据传递给组件会以某种方式丢失文件位置 当到达应该上传文件的组件部分时 我收到臭名昭著的表单字段不包含文件错误 我不是 100 确定为什么会发生这种情况 但如果我
  • 如何只推送到 Hg 中的一个分支?

    我有一个 Hg 存储库 其中有 3 个分支 但其中两个处于非活动状态 因为我已经将它们合并到我的默认分支中 hg heads显示 3 个头 每个分支一个 尽管汞分支显示其中 2 个分支为 非活动 当我尝试推送我的默认分支时 使用hg Pus
  • InvalidDefinitionException:无法构造“com.vehicle.datatransferobject.VehicleDTO”的实例

    在我在 Spring Boot 中构建的 REST 端点中 我试图传递我的vehicleDTO到我的控制器 但在它到达我的控制器之前 出现了错误 InvalidDefinitionException 无法构造实例com vehicle da
  • 为什么在这个智能合约上使用断言?

    contract Sharer function sendHalf address payable addr public payable returns uint balance require msg value 2 0 Even va
  • TextInputLayout 后缀/前缀[重复]

    这个问题在这里已经有答案了 我想为 TextInputLayout 添加后缀 一个例子取自材料 io https material io guidelines components text fields html text fields
  • RestController 的最佳实践是什么?

    代码约定表明控制器中没有逻辑 一切都应该在服务层处理 我的问题特别是关于返回 ResponseEntity 应该在RestController中处理还是在Service层中处理 我两种方法都尝试过 我认为 RestController 是返