需要以下面的方式帮助保存REST API的请求和响应,
Session ID:
Request:
{
{
request header
}
{
request body
}
}
Response:
{
{
response header
}
{
response body
}
}
这不应该取决于日志记录级别或任何其他与日志记录相关的概念。 检查了许多类似的问题,但没有答案, 请允许任何人帮助我,谢谢。
Spring Boot - How to log all requests and responses with exceptions in single place?
答案 0 :(得分:1)
您可以使用HandlerInterceptorAdapter,并在文件中写下您需要的信息:
Spring提供了一种配置用户定义的拦截器的机制 在Web请求之前和之后执行操作。
在Spring请求拦截器中,其中一个值得注意 接口是HandlerInterceptor,可用于记录 通过实施以下方法传入请求:
preHandle() - 此方法在实际控制器之前执行 service方法afterCompletion() - 此方法执行后 控制器已准备好发送响应此外,Spring提供 表单中HandlerInterceptor接口的默认实现 HandlerInterceptorAdaptor类,可以由用户扩展。
让我们创建自己的拦截器 - 通过扩展 HandlerInterceptorAdaptor as:
@Component public class TaxiFareRequestInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle( HttpServletRequest request, HttpServletResponse response, Object handler) { return true; } @Override public void afterCompletion( HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { // } }
答案 1 :(得分:1)
我从Gist https://gist.github.com/int128/e47217bebdb4c402b2ffa7cc199307ba找到了答案 记录请求和响应。根据我的要求进行了一些小的更改,以写入文件而不是使用Java 7功能进行记录。
refFromURL
或
Path path = Paths.get("home/midoriya/sample.txt");
String strValue = "Whatever the values want to write in file";
Path path = Paths.get(fileName);
byte[] bytes = strValue.getBytes();
Files.write(path, bytes);