当前位置: 首页 > 知识库问答 >
问题:

SpringBoot/Swagger,是否仅显示Swagger上的特定控制器?

黎征
2023-03-14

    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {
    
        public static final String AUTHORIZATION_HEADER = "Authorization";
    
        @Bean
        public Docket api() {
            return new Docket(DocumentationType.SWAGGER_2).securitySchemes(Arrays.asList(apiKey())).select()
                    .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class)).paths(PathSelectors.any()).
                            build().apiInfo(apiInfo());
        }
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder().title("API").description("DEMO").version("v1").build();
        }
    
        private ApiKey apiKey() {
            return new ApiKey("JWT", AUTHORIZATION_HEADER, "header");
        }
    }
    

    此配置显示所有控制器,如何在 Swagger 上仅显示特定的控制器?

    共有1个答案

    葛念
    2023-03-14

    1.同一封装中的特定控制器

        @Bean
        public Docket api() {
            return new Docket(DocumentationType.SWAGGER_2).securitySchemes(Arrays.asList(apiKey())).select()
                    .apis(RequestHandlerSelectors.basePackage("com.tm.x.y.z.your.controller")).paths(PathSelectors.any()).
                            build().apiInfo(apiInfo());
        }
    

    在 com.tm.x.y.z.your.controller 中显示所有控制器

    >

  • 创建类注释(例如:显示 API 注释)

    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    
    @Retention(RetentionPolicy.RUNTIME)
    public @interface ShowAPI {
        String value() default "";
    }
    

    向控制器添加注释

     @RestController
     @ShowAPI
     public class ExampleController {
     }
    

    更改炫耀配置

            @Bean
            public Docket api() {
                return new Docket(DocumentationType.SWAGGER_2).securitySchemes(Arrays.asList(apiKey())).select()
                        .apis(RequestHandlerSelectors.withClassAnnotation(ShowAPI.class)).paths(PathSelectors.any()).build()
                        .apiInfo(apiInfo());
            }
    

    显示带有类注释的所有控制器是ShowAPI

  •  类似资料:
    • 我目前在我的项目中使用swagger,我有100多个控制器。我想由于大量的控制器,swagger UI文档页面需要超过5分钟来加载它的控制器。是否可以在UI页面选择特定的控制器,并只为它们加载选项?或者还有其他方法可以更快地加载UI页面?帮帮我!

    • 我使用maven codegen插件只是从我的yml文件生成控制器和模型文件的接口。这是一个java Spring Boot程序。 插件配置: 关键是在我的目标/生成的源目录/swagger中生成了许多我不需要的文件,例如: . swagger-codemen/Version . swagger-codemen-忽略 pom-xml README. md 我只需要在src/main/java…中生

    • 我已经将swagger与django rest框架集成在一起,但是swagger文档没有创建一个输入框来发布post请求的数据。 我的解析器设置, }

    • 我有一个用于POST操作的大摇大摆的Spring MVCendpoint。该操作采用一个路径参数和一个(json)请求实体。当大摇大摆的UI生成时,它会自动创建请求正文数据类型的示例值。这个例子是基于应用程序中的一个java实体。该实体用于一些其他操作,但是对于POST操作,我不希望示例中暴露的一些实体字段。是否可以在不修改现有java模型的情况下修改这个例子?例如,是否可以在下面的示例中排除。

    • 下面是我的代码:我正在从application.properties文件swagerconfig.java获取所有值 下面是我的springboot初始值设定项: ServletInitializer.java 日志显示它已映射: 这是我得到的错误:

    • 本文向大家介绍SpringBoot整合Swagger的方法示例,包括了SpringBoot整合Swagger的方法示例的使用技巧和注意事项,需要的朋友参考一下 依赖 配置类 启动类 在springBoot的启动类上添加一个注解即可配置成功: @EnableSwagger2 访问api的路径 http://ip/projectName/swagger-ui.html 注解说明 @Api 标注在类上,