Изменить список swagger api
Я использую Jersey 2 в качестве реализации JAX-RS для моего REST API.
Также я успешно настроил swagger для включения генерации списка API. Я использую статический проект Swagger-UI для отображения страницы с описанием.
Мой Maven Pom выглядит так:
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-spring3</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-jersey2-jaxrs_2.10</artifactId>
<version>1.3.2</version>
</dependency>
Однако, описывая некоторые из моих методов и параметров в ресурсах Java, я обнаружил, что он слишком многословен, чтобы смешиваться с кодом.
Поэтому я решил использовать некоторый внешний механизм для предоставления описаний. Я могу представить какой-нибудь файл, в который я введу название метода и параметра с сопроводительным описанием. При создании результирующего файла JSON API-интерфейса я хочу объединить информацию из моих файлов ресурсов Java с информацией из внешнего файла.
Основываясь на поиске и поиске материалов, я вижу, что листинг API хранится не в файле, а создается на лету. Поэтому мне нужно найти способ взломать процесс создания списка API, чтобы добавить мои собственные описания.
Я попытался использовать ContainerResponseFilter для этой цели, и я могу перехватить объект ответа с сгенерированным объектом листинга API, но этот объект является scala-объектом только для чтения. Поэтому я не могу переопределить описание свойства.
Можно ли каким-либо образом изменить свой список API с помощью собственной информации?
2 ответа
Я думаю, что использование фильтра - лучшая идея. Вам не нужно изменять объект Scala, просто создайте новый объект с новыми описаниями. Просто посмотрите, как Swagger создает объект, и имитируйте его.
Прошло много времени с тех пор, как я посмотрел на swagger, но можете ли вы просто создать выделенный интерфейс, содержащий вашу разметку swagger, и затем реализовать этот интерфейс? Это не совсем то, что вы ищете, но, по крайней мере, это не даст многословия вашим конкретным классам.