java - 如何在 SwaggerUI 中显示父项目的端点

标签 java spring spring-boot swagger springfox

我有两个项目,一个是类似底盘的项目,有一些依赖项,spring-boot-starter-parent 作为父项目,一个带有 REST 端点的模块,第二个是带有第一个项目作为父项目,其中有运行 Spring Boot 应用程序的 main 方法。 我正在使用 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";
    }
}

我希望在 SwaggerUI 和 .json 中看到 /example 端点,但我只能看到 /error 端点。

最佳答案

编写您自己的 swagger 配置并在下面定义一个 bean,无论您将提供什么基础包 swagger 都会根据相同的内容过滤 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();
    }
}

关于java - 如何在 SwaggerUI 中显示父项目的端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58747807/

相关文章:

java - 使用固定语言环境运行 Spring Boot 应用程序

java - 在 Spring 框架上使用 LocalDate 进行循环计算的最佳实现是什么?

java - 在 Spring Security 中获取访问 token

java - 如何强制 MockitoJUnitRunner 在没有基本 http 身份验证的情况下失败?

java - Spring-boot 似乎没有获取存储库

java - Mongodb 聚合(Java/Spring)查询以获取最后一个子元素

java - 如何根据表单字段选择实例化什么类型的对象?

java - JPQL Left Join - 如何在实体类中设置实体关系

spring - 属性文件未加载

java - 导出 JAR 文件但需要 MySQL 驱动程序