我需要将 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/