OpenAPI 和 spring-doc 未找到控制器类中的所有映射

2023-12-14

这有点奇怪。 springdoc-openapi-ui v1.2.32,生成的文档仅包含控制器内的一些映射。

Example:

    @Operation(
            summary = "Foo",
            description = "Foo"
    )
    @PostMapping(path="/v1/foo")
    public ResponseEntity<ResponseObject> postFoo(@RequestBody FooRequestObject searchRequest, HttpServletRequest request){ ... }


    @Operation(
            summary = "Bar",
            description = "Bar"
    )
    @GetMapping(path="/v1")
    public ResponseEntity<ResponseObject> getBar(@RequestBody BarRequestObject request, HttpServletRequest request){ ... }


    @Operation(
            summary = "Bar",
            description = "Bar"
    )
    @PostMapping(path="/v1")
    public ResponseEntity<ResponseObject> postBar(@RequestBody BarRequestObject request, HttpServletRequest request){ ... }

仅生成文档postBar and getBar服务,其他路径被忽略。

我尝试过的:

  1. 最初这两个 POST 方法都被命名为post。我重命名是为了避免冲突。
  2. 我没有设置控制器级别路径。
  3. 检查注释导入
  4. 未命中文档的缓存版本

如果我向控制器添加另一个服务(带或不带注释标记),它也不会显示在生成的 Swagger 中。例如:

@GetMapping(path="/test")
public String getTest(){
    return "test";
}

如果我将此方法添加到全新的控制器中,则会生成文档。

Thanks

Edit配置类

@Configuration
public class SwaggerConfig {                                    

    @Bean
    public OpenAPI springOpenAPI() {
        return new OpenAPI()
                .info(new Info().title("My API")
                .description("My API service documentation. ")
                .version("v1.0")
                .license(new License().name("Terms of Use").url("https://myapi.com/terms.html")));
    }
    
}

您面临的问题是由于您使用了 1 级参考文献而引起的paths-to-match这导致 Springdoc 过滤可用的端点only在指定的路径上。

springdoc.paths-to-match=/api/v1,/v2,/v3,/status

上述属性与端点进行匹配开始和结束 with /v2, /v3, /status, /api/v1。这无法匹配可能具有以下形式的端点/users/v2/甚至/v2/users etc.

虽然不支持完整的正则表达式来指定您想要包含的端点,但有基本支持**这可以帮助您指定要包含/排除的级别。

考虑下面的例子

springdoc.paths-to-match=/**/v1/**/

它将包括具有以下特征的任何端点/v1/在里面。例子如/users/v1/, /v1/dasboard并且/user/v1/dashboard.

springdoc.paths-to-match=/v2/**

它将仅匹配以以下开头的端点/v2并深入 n 层。例子如/v2/dashboard将被包括在内,但是/users/v2/something将被排除在外。

springdoc.paths-to-match=/**/v1

它只会匹配以以下结尾的路径/v1。例子如/users/v1将被匹配,而那些喜欢/v1/user将不会被匹配。

或者,您也可以更新您的Bean做同样的事情。但请注意,属性文件优先于 bean 配置。

// you existing bean here

// Define an API group that'll include specific version. Can be helpful in versioning the APIs.
@Bean
public GroupedOpenApi hideApis() {
    return GroupedOpenApi.builder().group("default")
            .pathsToExclude("/api/v2/**", "/v2/**", "/**/v3/**")
            .pathsToMatch("/v1/**", "/api/v1/**")
            .build();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenAPI 和 spring-doc 未找到控制器类中的所有映射 的相关文章

随机推荐

  • Windows Phone 8.1文本框字符虚拟键验证

    我正在开发 Windows Phone 8 1 应用程序 在文本框中 我想阻止用户仅输入任何非数字字母 0 9 所以这是我的代码 private void NumKeyDown object sender KeyRoutedEventArg
  • 使用 python 登录网站

    我正在尝试登录此page使用Python 这是我的代码 from urllib2 import urlopen from bs4 import BeautifulSoup import requests import sys URL htt
  • mvn 编译错误:打开 zip 文件时读取 jar 错误

    我有一个具有这些属性的 x 模块 模块名称 x datamodel 这是 pom xml 的一部分
  • 枚举单例如何发挥作用?

    以前我不使用枚举 而是这样做 public static ExampleClass instance public ExampleClass instance this public static ExampleClass getInsta
  • 反向工程 HTTP 请求

    我拦截了 Charles 上从 iPhone 到 Instagram 的 HTTP 请求 以下是标头 POST logging client events HTTP 1 1 Host graph instagram com Content
  • 使用 javascript 添加 ASP.NET 控件

    我想添加一个ASP label and ASP textbox通过Javascript控制页面
  • 使用树形图将嵌套单元格绘制为树:MATLAB

    我有一个代表树结构的复杂单元格 CellArray 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 我想用它来绘制代表树treeplot p 但我不知道如何构造数组
  • 当元素位于视口中时重新启动计数器动画

    此代码使计数器 动画在视图中启动 但我希望它在滚动到视图之外然后再次进入视图时重新启动 似乎无法解决 如果您想在此处查看实时链接 向下滚动到页脚之前的底部 https easyrecycle dk Serviceomraader html
  • Python 多处理

    我有一个包含二进制编码字符串的大列表 我之前曾在单个函数中处理过这些字符串 如下所示 just included this to demonstrate the data structure data np zeros 250 dtype
  • 正则表达式 javascript 最少 8 个字符,至少 1 个数字和 1 个特殊字符,最多 32 个字符 [重复]

    这个问题在这里已经有答案了 我想要一个正则表达式来检查 最少 8 个字符 至少一个数字和一个特殊字符 最多 32 个字符 我的正则表达式是 d a zA Z 0 9a zA Z 8 16 我测试这个正则表达式可以满意地工作 8 32 d 1
  • iTunes 中更新后的同一个应用程序

    我们要求对我们的应用程序的更新进行快速审查 以修复一个严重的错误 加急审核已获得批准 现在我们的 1 1 版本已经发布 而不是 1 0 版本 但应用程序是一样的 我们对应用程序所做的更改不在新版本中 我们有相同二进制文件的临时版本 并且在临
  • SQL 如果不为空则更新

    我有这个查询 UPDATE users SET username Param1 email Param2 PASSWORD Param3 WHERE id Param4 这是更新我的用户行 但我想说 如果电子邮件或密码不为空更新它们 否则就
  • 是否可以检索iPhone联系人记录的创建时间?

    我想问一个关于 iPhone 的问题 是否可以从每条记录的iPhone联系人中检索创建时间 谢谢 是的 你想要的kABPersonCreationDateProperty 请参阅参考 NSDateFormatter dateFormatte
  • og:image 和 og:url 应该放在 还是 中?

    For og image and og url 因为它们有 URL 我可以将它们放在link标签而不是meta标签 它是更好的吗 另外 使用这两个标签有什么区别 og image and og url 我不知道 OGP 的其他主要消费者 所
  • @QueryParam 正则表达式

    我正在使用 Jersey for Rest 并有一个接受的方法 QueryParam 但是 用户可以发送 QueryParam 像这样 contractName where 是 0 155 之间的数字 如何在 QueryParam 中定义它
  • WIF 配置:issuerNameRegistry 与证书验证

    在 Windows Identity Foundation WIF 4 5 配置中 以下各项之间的关系是什么issuerNameRegistry and certificateValidation 每个人都验证 SAML 2 0 断言的哪一
  • UIImage 到 UIColor 像素颜色数组

    我很抱歉问这个问题 但我不知道如何将 UIImage 表示为每个像素的 UIColor 数组 我已尽最大努力进行转换UIImagePNG JPEGRepresentation但无法得到想要的结果 这是一个 Swiftier 版本 Swift
  • 登录功能还是使用它的功能?

    Is it best 我知道没有灵丹妙药 但使用其中一种可能比另一种有一些优势 登录调用函数或调用它的函数 例子 方法一 module MongoDb let tryGetServer connectionString try let se
  • 将值从活动传递到广播接收器并从广播接收器启动服务

    我有一个活动 它包含一个按钮 其文本会动态更改 我想将此文本传递给接收短信的广播接收器 现在我的广播接收器应该接收文本 并根据文本启动或停止服务 这个怎么做 如果您的 BroadcastReceiver 是在单独的类文件中定义的 那么您可以
  • OpenAPI 和 spring-doc 未找到控制器类中的所有映射

    这有点奇怪 springdoc openapi ui v1 2 32 生成的文档仅包含控制器内的一些映射 Example Operation summary Foo description Foo PostMapping path v1 f