Будучи зеленым рогом, я попытался интегрировать ядро Swagger с моим API остальных по этой ссылке ->
https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-2.X-Project-Setup-1.5
Возникли некоторые проблемы с функцией setScan в BeanConfig, поэтому пакет отражений с более низкими характеристиками, как видно из моего файла maven ниже:
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-jaxrs</artifactId>
<version>1.5.18</version>
<exclusions>
<exclusion>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.10</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>swagger-ui</artifactId>
<version>3.13.6</version>
<scope>runtime</scope>
</dependency>
Это был метод запуска приложения:
public void start() throws Exception {
BeanConfig beanConfig = new BeanConfig();
beanConfig.setVersion("2.0");
beanConfig.setSchemes(new String[]{"http"});
beanConfig.setHost("0.0.0.0:8082");
beanConfig.setBasePath("/test");
beanConfig.setResourcePackage("io.confluent.kafkarest.resources");
beanConfig.setScan(true);
beanConfig.setPrettyPrint("true");
if (server == null) {
createServer();
}
server.start();
}
Таким образом я смог создать swagger.json в корневом каталоге.
Теперь я хотел передать этот json swagger ui, поэтому я добавил зависимость в maven pom.xml, как видно выше. И изменил код, как показано ниже:
public void start() throws Exception {
BeanConfig beanConfig = new BeanConfig();
beanConfig.setVersion("2.0");
beanConfig.setSchemes(new String[]{"http"});
beanConfig.setHost("0.0.0.0:8082");
beanConfig.setBasePath("/test");
beanConfig.setResourcePackage("io.confluent.kafkarest.resources");
beanConfig.setScan(true);
beanConfig.setPrettyPrint("true");
if (server == null) {
createServer();
}
server.setHandler(buildSwaggerUI()); //--> added this method call.
server.start();
}
public static ContextHandler buildSwaggerUI() throws Exception {
ResourceHandler rh = new ResourceHandler();
rh.setResourceBase(KafkaRestApplication.class.getClassLoader()
.getResource("META-INF/resources/webjars/swagger-ui/3.13.6")
.toURI().toString());
ContextHandler context = new ContextHandler();
context.setContextPath("/swagger");
context.setHandler(rh);
return context;
}
После этого я могу получить довольно красивый пользовательский интерфейс по умолчанию, но теперь swagger.json пропал. Я больше не получаю swagger.json. Я пытался следить за этим блогом:
https://danielflower.github.io/2016/04/01/Swagger-with-embedded-jetty-without-magic.html
Я действительно изо всех сил пытаюсь заставить swagger ui работать с swagger json spec. Я чувствую, что скучаю по чему-то глупому? Пожалуйста, помогите.