【问题标题】:How to programatically ad securitySchema to swagger.yaml如何以编程方式将安全架构添加到 swagger.yaml
【发布时间】:2021-11-16 10:58:36
【问题描述】:

我有一个 swagger.yaml 文件,其中包含我的 API 定义。我正在使用以下代码将其添加为 swagger 资源并在 swagger-ui 中显示:

@Primary
@Bean
public SwaggerResourcesProvider swaggerResourcesProvider(InMemorySwaggerResourcesProvider defaultResourcesProvider) {
    return () -> {
        SwaggerResource wsResource = new SwaggerResource();
        wsResource.setName("Documentation");
        wsResource.setSwaggerVersion("3.0");
        wsResource.setLocation("/swagger.yaml");

        List<SwaggerResource> resources = new ArrayList<>(defaultResourcesProvider.get());
        resources.add(wsResource);
        return resources;
    };
}

但是,我需要为我的应用程序的每个实例(开发、测试、产品)设置不同的安全架构授权 URL。问题是如何实现它?是否可以以编程方式添加安全模式,该模式将基于 f.e. 进行参数化。环境变量?

【问题讨论】:

    标签: java spring spring-boot swagger


    【解决方案1】:

    您可以使用以下方法做到这一点:

    @Bean
    public OpenAPI openAPI() {
        return new OpenAPI()
                .components(new Components().addSecuritySchemes("jwtScheme",
                    new SecurityScheme().type(SecurityScheme.Type.APIKEY).in(SecurityScheme.In.HEADER).name("Authorization")));
    }
    

    您可以获取任何想要参数化此配置的环境变量。您可以在https://www.baeldung.com/swagger-2-documentation-for-spring-rest-api#10-swagger-ui-with-an-oauth-secured-api 阅读更多相关信息。

    【讨论】:

      猜你喜欢
      • 2010-12-29
      • 2018-05-25
      • 1970-01-01
      • 1970-01-01
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 2013-12-30
      相关资源
      最近更新 更多