spring - spring请求body字段处理
问题描述
我正在开发一个基于 Spring 的 Web 应用程序,我们有一些 RestControllers 和一些 Request DTO 类。请求 DTO 包含需要一些验证的令牌字段。所以我使用弹簧验证器来验证这一点。验证后,我们希望使用另一个 REST API 将该字段发送到外部系统(仅用于某种分析日志记录)。在多个 DTO 对象及其控制器中重复相同的字段。因此,我可以轻松地为验证器定义注释并在 DTO 中重用它们。但我不确定在验证成功后如何处理该字段(即调用分析 API 以使用该字段后验证),而不将其与控制器的核心逻辑混合。
我能想到的方法:
- 实现一个过滤器/拦截器并在那里处理该字段。但是有一个限制,请求正文只能读取一次,所以我需要通过创建请求包装器来使用一些替代方法。
- 在每个控制器中重复逻辑,对于每个新控制器,我们都需要记住编写该代码,这很容易出错。
但这些方法中没有一个看起来更干净。有人可以推荐一种更好的方法来实现这一目标吗?
提前致谢。
解决方案
您可以在那里创建BaseController
并实现该方法。将其扩展BaseController
到您需要此日志记录服务的任何地方。如下所示。
BaseController.java
class BaseController {
protected void remoteLogging(String name,String token) {
//Calling the remote log services}
}
应用控制器.java
@Controller
@RequestMapping("register")
public class LeaseController extends BaseController {
@PostMapping("new")
public String new(@Valid @ModelAttribute("registration") Registration registration,BindingResult result){
if(rest.hasErrors(){
remoteLogging("name","token");
}
}
推荐阅读
- c# - 检查任何文本框是否有数据然后做一些事情
- java - Java 方法 CharAt 在与 # 比较时崩溃
- swift - Swift 将数组转换为元组数组
- c - 扫描未知数量的输入并在C中打印条形图
- php - 我的路线不起作用,所以我无法访问产品页面
- swift - 如何剪切长文本直到它适合 NSTextView 并在剪切文本的末尾添加...?
- react-native - 无法通过反应导航从 FlatList 传递数据
- javascript - scrollWidth 问题的最佳解决方案是什么?
- python - PIP - 如何从本地文件夹安装依赖项?
- node.js - ReferenceError:未定义套接字。套接字.io