Отключить стандартный Swagger Jaxrs2 OpenAPI URL - PullRequest
0 голосов
/ 24 апреля 2020

мы документируем наш JAX-RS API с чванством. Используя пакет swagger-jaxrs2, мы можем очень хорошо создать документацию по API для нашей сборки.

Единственное, что мы хотим изменить: стандартный openapi -Url. Зарегистрировав класс Swaggers OpenApiResource, наше приложение создает конечную точку по умолчанию "[host]/openapi".

Мы можем создать собственную конечную точку, которая обслуживает openapi-spe c, но мы не можем отключить эту конечную точку по умолчанию.

Каждый намек приветствуется! Заранее спасибо.

1 Ответ

0 голосов
/ 24 апреля 2020

Мы решили с помощью обходного пути: изменив javax.ws.rs.core.Application, чтобы загрузить только те конечные точки, которые мы предоставляем своими собственными, игнорируя любую другую конечную точку 3rdParty, такую ​​как swagger-jaxrs2 openapi или openapi.{type:json|yaml}

@ApplicationPath("")
public class OurApplication extends javax.ws.rs.core.Application {

    @Override
    public Set<Class<?>> getClasses() {
        // Start detecting only classes in your package! provided 3rdParty packages 
        // (like io.swagger.v3.jaxrs2.integration.resources) won't be provided
        Reflections ourClasses = new Reflections("our.package.naming");

        // Scan your classed for @javax.ws.rs.Path Annotaion. We need just collect 
        // API-Endpoints
        Set<Class<?>> ourEndpoints = ourClasses.getTypesAnnotatedWith(Path.class); 

        // fyi - log the registered classes / endpoints
        System.out.println("Providing "+ ourEndpoints);       

        // return endpoints to provide it in your application
        return ourEndpoints; 
    }

}

СОВЕТ: Из-за аннотации @ApplicationPath нет необходимости изменять веб. xml.

Используемые нами отражения предоставляются maven:

  <dependency>
      <groupId>org.reflections</groupId>
      <artifactId>reflections</artifactId>
      <version>0.9.12</version>
    </dependency>

Часы https://github.com/ronmamo/reflections для получения дополнительной информации о пакете отражений.

Мы не нашли лучшего решения, но это то, что сработало для нас. Наслаждайся этим.

...