java - 生成静态 api-doc

标签 java swagger swagger-maven-plugin

我需要将 swagger 静态生成的 api json 文件存储在我们的 git 存储库中,以轻松跟踪 API 更改。 与此类似 http://petstore.swagger.wordnik.com/api/api-docs/user

我已经附加了maven插件 https://github.com/kongchen/swagger-maven-plugin

添加到项目中,它会为API生成*.json文件。 但是,api 和属性的顺序有时会有所不同。因此,*.json 文件会在没有任何 api 更改的情况下进行修改(只是顺序不同)。

然后我为每个指定了“position”参数

@Api,
@ApiOperation
@ApiModelProperty

注释,

这主要是帮助。但有些服务会返回 org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput 和 javax.ws.rs.core.Response 类,并且该类的属性仍然按随机顺序排列。 然后我用以下方法重写了这些类的 json 表示 /swagger-overriding-models.json

现在一切正常了。 我只是在徘徊,可能这不是最好的方法,还有其他一些可能性可以按可预测的顺序生成 api json 文件,而不会弄乱“位置”和模型覆盖?

最佳答案

保证订购并不是那么简单。 Java 的反射不保证使用反射时的顺序 - http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getDeclaredFields-- :

返回数组中的元素未排序,也没有任何特定顺序。

当然,它通常会在声明顺序中返回它们,但这没有记录,也不是 JLS 的正式部分。

理论上 swagger-core/swagger-maven-plugin 可以强制按字母顺序排序,但这可能更不理想,因为在文档的某些方面,排序很重要(因此有 "position" 属性) .

您确实提出了一个关于跟踪 API 更改的需求的有趣观点。我强烈建议您在 https://github.com/swagger-api/swagger-spec 上打开问题,所以我们可以看看是否可以为其提供一个解决方案,无论是作为规范的形式还是作为规范版本差异的支持工具。

关于java - 生成静态 api-doc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27361211/

相关文章:

java - 帮助 Web 服务 vector Java Glassfish

swagger - 如何指定一个属性可以是空的,也可以是带有 Swagger 的引用

java - 为什么 @ApiModelProperty 注释的 "example"属性中有多余的反斜杠?

javascript - 有没有办法从 json-server 文件生成 swagger.json

spring-boot - 401未经授权的页面会 Swagger 吗?

java - Swagger 2.0.3 与 Spring MVC 抛出 HttpMediaTypeNotAcceptableException : Could not find acceptable representation

gradle - 使用kongchen swagger-maven-plugin时,对gradle task swagger不可见的类

java - 用 Snackbar 内部类替换 Toast

java - spring javaconfig、xml config和注解的性能差异

java - 使用 MapStruct 进行嵌套映射