生成静态api-doc

时间:2014-12-08 15:25:46

标签: java swagger swagger-maven-plugin

我需要在我们的git仓库中存储swagger静态生成的api json文件,以便轻松跟踪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文件,而不会弄乱“位置”和模型覆盖?

1 个答案:

答案 0 :(得分:2)

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

The elements in the returned array are not sorted and are not in any particular order.

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

理论上swagger-core / swagger-maven-plugin可以强制执行字母排序,但它可能更不可取,因为在文档的某些方面,排序很重要(因此"position"属性)。

您确实提出了有关需求的有趣观点 - 跟踪API更改。我建议你在https://github.com/swagger-api/swagger-spec上打开一个问题,这样我们就可以看看我们是否可以为它制作一个解决方案,作为规范的一种形式,或者是一个支持工具来区分规范的版本。