标签: springfox-boot-starter

如何在 openApi 生成时禁用 springfox 导入?

我想将 openapi 生成器插件从 5.0.0 替换为 5.1.0。如果我构建我的项目,它会自动导入import springfox.documentation.annotations.ApiIgnore;到我的所有由 API 接口生成的项目中。

我怎么能忽略这个实现呢?

gradle openapi-generator springfox-boot-starter

5
推荐指数
1
解决办法
1888
查看次数

拒绝应用样式,因为其 MIME 类型('application/json')不是受支持的样式表 MIME 类型,并且启用了严格的 MIME 检查

我添加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/");
    }

}
Run Code Online (Sandbox Code Playgroud)

我尝试排除这部分:


    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
Run Code Online (Sandbox Code Playgroud)

仍然没有决心。希望有人可以帮忙。谢谢。

swagger-ui spring-boot springfox-boot-starter

4
推荐指数
1
解决办法
4173
查看次数

Swagger 3.0.0:不能在没有 SwaggerConfig 和 @Profile 的情况下在生产中禁用

我正在从 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我不再需要这个@Configuration,它允许我指定我的环境配置文件@Profile并因此在生产中禁用 Swagger,我如何在 SpringFox Swagger-UI 3.x 中禁用生产中的 Swagger?

注意:这里讨论了基于 Spring Security 的方法这可能是某些人的选择,但由于两个原因,这不是这种情况的选择:

  • 我的应用程序不使用 Spring Security,并且不可能包含spring-boot-security-starter依赖项
  • 它需要将所有其他端点列入白名单才能让它们再次工作,这是不可接受的

java swagger swagger-ui spring-boot springfox-boot-starter

2
推荐指数
1
解决办法
475
查看次数

Swagger UI OpenAPI 3,查询参数显示为对象而不是可更改值的字段

之前在 SpringBoot v2.5.7 中,我有这个 Spring REST 控制器方法。它有一个TestCriteriaDTO 类型作为路径参数。

@GetMapping(path = "/test")
public void test(TestCriteria testCriteria) {

}
Run Code Online (Sandbox Code Playgroud)

TestCriteria班级就是这样的。(Language是一个可以采用 或EN的枚举FR)。

public class TestCriteria {
    @ApiModelProperty(allowEmptyValue = true)
    List<Language> langauges;
    
}
Run Code Online (Sandbox Code Playgroud)

我使用了 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;

}
Run Code Online (Sandbox Code Playgroud)

现在 Swagger UI 不再显示languages为可选择值的字段,而是显示为对象。 在此输入图像描述

我还比较了生成的 OpenAPI 定义,发现:

以前的 API …

swagger-ui spring-boot openapi springdoc springfox-boot-starter

1
推荐指数
1
解决办法
4613
查看次数