Вы должны сделать это на уровне приложений. Вы можете использовать рамки AOP для Java (например, Spring AOP или/или AspectJ) для перехвата данных в/из конечных точек ваших микросервисов или ваших обычных методов. Аннотации @Around
позволяют перехватывать входящие данные (параметры/аргументы метода) и исходящие данные (возвращаемые значения/ответы).
@Aspect
public class AuditAspect {
@Around("execution(* com.foobar.controllers.*.*(..))")
public void doAudit(ProceedingJoinPoint joinPoint) throws Throwable {
System.out.println(joinPoint.getSignature().getName()); //get method name
System.out.println(Arrays.toString(joinPoint.getArgs())); //get the arguments/params
joinPoint.proceed(); //continue
System.out.println("intercept response ");
}
}
Я предлагаю вам использовать шаблон прокси и кешировать вызовы. Это уменьшит количество поездок в сети. Как вы спросили о лучших практиках, обратитесь к спецификации для полного стандарта обслуживания RESTFul и модели зрелости Richardson – amitmah
Это должно быть полезно: https://danpalmer.me/blog/your-api-is-not-restful – amitmah