Как показать конечные точки из родительского проекта в SwaggerUI - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть два проекта, один - это проект, похожий на шасси, с некоторыми зависимостями и spring-boot-starter-parent в качестве родительского, и один модуль с конечной точкой REST, а второй - проект с первым проектом в качестве родительского, в котором основной метод работает с SpringЗагрузочное приложение. Я использую Swagger для документирования этой конечной точки, однако она не показывает мою пользовательскую конечную точку из родительского проекта. Единственная конечная точка, которую я вижу, это BasicErrorController /error, которая также из родительского проекта Spring Boot, и я хотел бы показать свои конечные точки таким же образом.

Я пытался аннотировать ExampleChassis как @Controller(так же, как в BasicErrorController), но это также не работает (код ниже). Основной класс имеет аннотацию @EnableSwagger2.

Родительский проект pom.xml:

<groupId>com.example</groupId>
<artifactId>chassis</artifactId>
<version>1.1-SNAPSHOT</version>
<packaging>pom</packaging>

<properties>
    <swagger2.version>2.9.2</swagger2.version>
</properties>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.5.RELEASE</version>
</parent>

<modules>
    <module>rest</module>
</modules>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

модуль отдыха pom.xml:

<parent>
    <artifactId>chassis</artifactId>
    <groupId>com.example</groupId>
    <version>1.1-SNAPSHOT</version>
</parent>

<artifactId>rest</artifactId>
<dependencies>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>${swagger2.version}</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>${swagger2.version}</version>
    </dependency>
</dependencies>

Запускаемый проект SpringBoot pom.xml:

<artifactId>micro</artifactId>
<version>1.0-SNAPSHOT</version>

<parent>
    <groupId>com.example</groupId>
    <artifactId>chassis</artifactId>
    <version>1.1-SNAPSHOT</version>
</parent>

<dependencies>
    <dependency>
        <groupId>com.example</groupId>
        <artifactId>rest</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

Конечная точка REST:

@RestController
@RequestMapping("/example")
public class ExampleChassis {

    @RequestMapping
    public String getXing() {
        return "example";
    }
}

Я ожидаю увидеть /example конечную точку в SwaggerUI и .json, но я вижу только /error конечную точку.

1 Ответ

0 голосов
/ 07 ноября 2019

напишите свою собственную конфигурацию сваггера и определите bean-компонент ниже, какой бы базовый пакет вы не предоставили, сваггер фильтрует API в соответствии с тем же.

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket productApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select().apis(RequestHandlerSelectors.basePackage("com.company"))
                .paths(PathSelectors.any())
                .build();
    }
}
...