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 ()));
我的目的是审核通过我的应用程序端点进行的数据交换。我想检索通过端点交换的 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 ()));