spring-boot - 如何从请求中获取原始 JSON 消息并从响应中获取 HTTP 状态码
问题描述
我正在开发一个 Spring Boot 应用程序。作为处理请求的一部分,我们需要存储原始 JSON 请求和 HTTP 响应代码以存储在数据库中。
我们能够在扩展 RequestBodyAdviceAdapter 的类中拦截请求。该类实现了 afterBodyRead 方法来获取请求的正文。不幸的是,无法在此方法中获取原始 JSON 请求。
同样,我们有另一个类实现了 ResponseBodyAdvice 来拦截响应。在 beforeBodyWrite 方法中,响应状态码不可用。
解决方案
您可以编写一个简单的 servlet 过滤器:
@Component
public class JsonFilter implements Filter {
@Override
public void doFilter
ServletRequest request,
ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
// Log JSON request
chain.doFilter(request, response);
// Log JSON response and HTTP Status code
}
// other methods
}
在此处阅读有关过滤器和 Spring Boot 的更多信息:https ://www.baeldung.com/spring-boot-add-filter
推荐阅读
- angular - 有没有办法将复选框选中的值作为带有逗号的单个字符串发送以请求 Angular 11 中的正文?
- blockchain - 关于 Polkadot 协议架构中的 Slot 类型
- python-3.x - 无法访问另一个函数中的类属性
- reactjs - react-datetime:如何从按钮将时间设置为 now()
- laravel-backpack - 我收到此 Backpack DevTools 错误是否有原因?
- server - 语言服务器和语言服务有什么区别?
- android - 找不到符号(匕首柄)
- c++ - 如何修复控制转移绕过初始化错误?
- networking - WAF 背后的 EKS 的 IP 白名单
- azure - Azure 服务总线 http 与 websocket