首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于审计API请求/接口方法的机制/技术

用于审计API请求/接口方法的机制/技术
EN

Stack Overflow用户
提问于 2019-04-03 00:18:16
回答 1查看 80关注 0票数 2

在我的Web-API中,我在接口级声明了各种方法。并且每个方法的实现都是在服务级别编写的。在声明的每个方法中,我都添加了审计注释,如下所示

代码语言:javascript
复制
 CreateStackResponse createStack(@AuditId("id") String id, @AuditModule("module") String module, CreateStackRequest createStackRequest)

我的审计表列有: id、context-id、message、details、user-id、module、submodule、...

我如何构建消息(例如:"create stack request is initiated by abc user")存储。一种解决方案是,在服务级别,我将调用一个方法(例如logEvent(必需参数)),该方法将审计存储在数据库中。我们能用简单的注解在接口级别上做到这一点吗?例如,如何保存aws elastic beanstalk的事件选项卡中所示的审核日志。

EN

回答 1

Stack Overflow用户

发布于 2019-04-03 00:27:19

注释本身并不会为代码提供任何行为。所有这些注解都是附加到您的代码中的名称implies...extra信息。当您的代码在运行时使用自检来查看已编译代码的定义并根据这些注释执行操作时,注释的威力就显现出来了。

Spring框架广泛地做到了这一点。它会查看代码上的注释,并使用它们来决定如何连接应用程序。它通常会围绕你自己的类创建包装器类,这样它就可以在你的代码上注入自己的逻辑。

您当然可以自己做这样的事情,但这不是微不足道的。我建议看一下AspectJ,或者其他一些面向方面编程(AOP)框架。我建议在总体上学习面向方面编程的思想,因为您想要做的是它希望解决的最常见的问题之一。使用Spring框架也是解决此类问题的一个很好的方法。它包含一个用于执行AOP的模块"Spring AOP“。

不管你如何使用注解,你都在谈论大量的学习和潜在地重组你的代码以使用第三方软件包。您很可能希望放弃使用注释的想法,只将简单的日志记录代码放在主要逻辑中。

我刚刚在谷歌上搜索了"using aspect oriented programming for auditing",得到了很多有趣的点击数。这里就有一个这样的热门话题。我不知道这是不是你想要的最好的资源,但它会让你对我在这里谈论的东西有一个概念:

http://idanfridman.com/2014/05/13/clean-auditing-infrastructure-for-your-app-using-aop-custom-annotations-and-reflection/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55479359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档