首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在springdocs中,我可以根据操作上的标记定义多个OpenAPI定义吗?

在springdocs中,我可以根据操作上的标记定义多个OpenAPI定义吗?
EN

Stack Overflow用户
提问于 2020-09-02 11:42:04
回答 1查看 472关注 0票数 1

我需要在一个应用程序中使用springdocs文档为同一个API定义两个不同的OpenApi定义:一个用于内部开发人员,一个用于外部开发人员。外部定义将包括内部定义中的一些操作,但不是所有操作。

我已经考虑过使用GroupedOpenApi来创建这两个定义,但这要求我将应该从外部定义中排除的端点移到一个单独的RestController中,并移到一个排除的包中,该包将不包括在外部开发人员的定义中,但仍将包含在内部定义中。我倾向于基于API定义来构造代码,而不是基于对端点的安全访问。

这似乎可以使用SecurityScheme或标记来定义在给定的定义中包含哪些操作,可以使用类似于GroupedOpenApi的内容以及要包含的路径/包。因此,例如,我可以使用如下内容定义外部API的定义:

代码语言:javascript
运行
AI代码解释
复制
GroupedOpenApi.builder()
            .group("externalGroupName")
            .securitySchemesToInclude("externalSchemeName") // this doesn't currently exist
            .build();

然后使用SecurityRequirement标记的任何操作都会被添加到这个外部定义中。因此,例如,我可以在同一个RestController中定义以下两个端点:

将包括

代码语言:javascript
运行
AI代码解释
复制
    @SecurityRequirement(name = "externalSchemeName")
    @GET
    @Path("/pets")
    public Response getResponse(){
        return null;
    }
}

不包括

代码语言:javascript
运行
AI代码解释
复制
    @SecurityRequirement(name = "internalSchemeName")
    @GET
    @Path("/pets/internal")
    public Response getInternalResponse(){
        return null;
    }
}

使用这种方法,最好提供与路径/包包含/排除类似的包含/排除安全方案。

这似乎目前需要对springdocs文档做出贡献,除非我误解了如何创建多个定义的选项。是否有另一种方法可以将操作排除在我定义的定义之外,而不对所有定义完全隐藏该操作,并且不对包进行重组?

请注意,如果可能的话,我也不希望维护在配置中应该从组中排除的所有路径的列表,因为这容易出错,并且不允许跨多个服务提供共享配置。我更喜欢一个注释驱动的方法,类似于其他swagger定制的方式,这样我就可以定义配置一次,然后在基于注释定义或修改每个资源时更新它,以驱动生成的swagger。

EN

回答 1

Stack Overflow用户

发布于 2020-09-02 14:58:27

使用您的示例,您有其他未使用的GroupedOpenApi过滤器(基于路径):

代码语言:javascript
运行
AI代码解释
复制
    GroupedOpenApi.builder()
            .group("internalGroupName")
            .pathsToMatch("/pets/internal")
            .build();

    GroupedOpenApi.builder()
            .group("externalGroupName")
            .pathsToMatch("/pets")
            .packagesToExclude("/pets/internal")
            .build();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63712552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文