Java API的服务发现设计
我正在开发一个相当大的API(390+函数),我正在尝试收集文档团队为项目创建文档所需的所有信息 我决定使用JSON Hyperschema来表示这一点 我创建了一个注释处理器,从我的代码中查找所有Java API的服务发现设计,java,json,api,annotations,hateoas,Java,Json,Api,Annotations,Hateoas,我正在开发一个相当大的API(390+函数),我正在尝试收集文档团队为项目创建文档所需的所有信息 我决定使用JSON Hyperschema来表示这一点 我创建了一个注释处理器,从我的代码中查找所有javax.ws.rs.Path注释,并获取Javadoc、http方法(来自注释)和其他参数信息,但我遇到了一个问题 Hyper schema建议,并且我的项目规范要求,通过API发送的对象作为架构包含在Hyper schema中。通常我会用Jackson来完成这项工作。但是,由于我所在的注释处理器
javax.ws.rs.Path
注释,并获取Javadoc、http方法(来自注释)和其他参数信息,但我遇到了一个问题
Hyper schema建议,并且我的项目规范要求,通过API发送的对象作为架构包含在Hyper schema中。通常我会用Jackson来完成这项工作。但是,由于我所在的注释处理器不在主API项目中,因此我无法使用类引用(例如,User.class
,其中用户是API项目中的对象,而不是处理器中的对象),而不会生成错误。(对此进行了解释)
我的问题是,绕过这一限制的最佳方式是什么?我提出了一种方法,如下所述,但我希望它可以插入到任何其他服务(相同格式)中,以记录它们。
作为一个解决方案,我曾想过在编译时和运行时中断生成器。在编译时,我将生成带有占位符的JSON hyperschema来引用对象模式。它还将生成一个包含所有对象全名的资源文件
在运行时,我计划为返回的对象生成模式,然后将指向它们的链接插入JSON
我觉得这个解决方案似乎不太“优雅”。有人对实现这一目标的其他方法有什么见解吗?我推荐以下项目:- 这证实了 或 使用弹簧帽 也看到
您使用的是哪种JAX-RS实现?看看Jersey用来生成WADL()的方法。您可能会发现它很有用。这看起来对阅读资源很有帮助。我想我可能会改为阅读资源处理,但我仍然需要阅读javadoc,它将在那时消失。Jersey团队已经实现了一个doclet,它存储javadoc信息,以便进一步生成WADL。看看: