Создать статический API-документ

Мне нужно хранить статичные сгенерированные файлы api json в нашем git-репозитории, чтобы легко отслеживать изменения API. Подобно этому http://petstore.swagger.wordnik.com/api/api-docs/user

Я подключил плагин Maven https://github.com/kongchen/swagger-maven-plugin

в проект, и он генерирует файлы *.json для API. Но порядок API и свойства время от времени различаются. Таким образом, файлы *.json модифицируются без каких-либо изменений API (только в другом порядке).

Затем я указал параметр "положение" для каждого

@Api,
@ApiOperation
@ApiModelProperty

аннотаций,

и это в основном помогает. но есть некоторые службы, которые возвращают классы org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput и javax.ws.rs.core.Response, и свойства для этих классов все еще находятся в случайном порядке. Итак, я переопределил json представление этих классов с помощью /swagger-overriding-models.json

И теперь работает нормально. Я просто бродил, может быть, это не самый лучший способ, и есть некоторые другие возможности, чтобы файлы api json генерировались в предсказуемом порядке, без путаницы с "позицией" и переопределением модели?

1 ответ

Гарантировать заказ не так просто. Отражение Java не гарантирует упорядочение при использовании отражения - http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html:

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

Конечно, он обычно возвращает их в порядке объявления, но это недокументировано и официально не является частью JLS.

Теоретически Swagger-Core / Swagger-Maven-плагин может обеспечить алфавитный порядок, но это, вероятно, еще менее желательно, потому что в некоторых аспектах документации, порядок имеет значение (следовательно, "position" атрибуты).

Вы поднимаете интересный вопрос о необходимости - отслеживать изменения API. Я призываю вас открыть вопрос на https://github.com/swagger-api/swagger-spec, чтобы мы могли посмотреть, сможем ли мы найти решение для него, либо в форме спецификации, либо в качестве поддержки инструмент для сравнения версий спецификации.

Другие вопросы по тегам