我想将 openapi 生成器插件从 5.0.0 替换为 5.1.0。如果我构建我的项目,它会自动导入import springfox.documentation.annotations.ApiIgnore;到我的所有由 API 接口生成的项目中。
我怎么能忽略这个实现呢?
我添加swagger-ui到我的 spring-boot 服务应用程序中,在访问链接时遇到了一些类似的错误/swagger-ui/。
我在招摇中的参考来自这里:
https://www.baeldung.com/swagger-2-documentation-for-spring-rest-api
这是我的配置示例代码:
@Configuration
public class WebConfiguration implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoggerInterceptor());
    }
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}
我尝试排除这部分:
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
仍然没有决心。希望有人可以帮忙。谢谢。
我正在从 2.x 升级到 SpringFox Swagger 3.0.0,它引入了 Spring Boot starterspringfox-boot-starter依赖项,消除了对 2.x-based 的需求SwaggerConfig:
/**
 * NO LONGER NEEDED
 */
@Configuration
@EnableSwagger2
@Profile({"local", "dev", "beta"}) // <- HOW TO DISABLE IN PROD INSTEAD OF THIS
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }
}
现在我不再需要这个@Configuration,它允许我指定我的环境配置文件@Profile并因此在生产中禁用 Swagger,我如何在 SpringFox Swagger-UI 3.x 中禁用生产中的 Swagger?
注意:这里讨论了基于 Spring Security 的方法,这可能是某些人的选择,但由于两个原因,这不是这种情况的选择:
spring-boot-security-starter依赖项之前在 SpringBoot v2.5.7 中,我有这个 Spring REST 控制器方法。它有一个TestCriteriaDTO 类型作为路径参数。
@GetMapping(path = "/test")
public void test(TestCriteria testCriteria) {
}
而TestCriteria班级就是这样的。(Language是一个可以采用 或EN的枚举FR)。
public class TestCriteria {
    @ApiModelProperty(allowEmptyValue = true)
    List<Language> langauges;
    
}
我使用了 Springfox Swagger (springfox-boot-starter v3),Swagger UI 如下所示:
但后来我不得不将 SpringBoot 升级到 v3,并使用 Springdoc 和 OpenAPI v3 for Swagger。现在TestCriteria类看起来像这样:
public class TestCriteria {
    @Schema(type="array")
    @Parameter(allowEmptyValue = true)
    List<Langauge> languages;
}
现在 Swagger UI 不再显示languages为可选择值的字段,而是显示为对象。

我还比较了生成的 OpenAPI 定义,发现:
以前的 API …
swagger-ui spring-boot openapi springdoc springfox-boot-starter