1

我需要在我们的 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 更改的情况下被修改(只是顺序不同)。

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

@Api,
@ApiOperation
@ApiModelProperty

注解,

它主要是帮助。但是有一些服务会返回 org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput 和 javax.ws.rs.core.Response 类,并且这些类的属性仍然是随机顺序的。那么我用 /swagger-overriding-models.json 覆盖了这些类的 json 表示

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

4

1 回答 1

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上打开一个问题,以便我们可以查看是否可以为它生成解决方案,无论是作为规范的形式还是作为支持用于区分规范版本的工具。

于 2014-12-08T16:52:49.007 回答