Spring 如何审计端点通信?

In Spring how to audit endpoint communication?

我的目的是审核通过我的应用程序端点进行的数据交换。我想检索通过端点交换的 json 并将其存储在数据库中。为了存储 json 数据,我将使用 Javes (https://javers.org/),但我仍然需要弄清楚如何获取端点数据。

您可以编写拦截器来对流经应用程序的请求和响应进行额外处理。 如果您使用 spring ,它很容易实现。这是一个例子:

@Component
public class RestInterceptor implements ClientHttpRequestInterceptor {

 @Override
 public ClientHttpResponse intercept(HttpRequest request, byte[] body,
  ClientHttpRequestExecution execution) throws IOException {
  traceRequest(request, body);
  ClientHttpResponse response = execution.execute(request, body);
  traceResponse(response);
  return response;
 }

 private void traceRequest(HttpRequest request, byte[] body) throws IOException {
   //track request here
 }


 private void traceResponse(ClientHttpResponse response) throws IOException {
    //track response here
 }

}

现在用你的模板注册它

restTemplate.setInterceptors(Collections.singletonList(new RestInterceptor ()));