这有点奇怪。springdoc-openapi-ui v1.2.32中,生成的文档只包含控制器中的一些Map。
示例:
@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
和getBar
服务生成单据,其他路径忽略。
我尝试过的方法:
1.最初两个POST方法都被命名为post
。我重命名以避免冲突。
1.我没有设置控制器级别的路径。
1.已检查注解导入
1.未命中文档的缓存版本
如果我向控制器添加另一个服务(带或不带注解标记),它也不会显示在生成的Swagger中。
@GetMapping(path="/test")
public String getTest(){
return "test";
}
如果我将此方法添加到一个全新的控制器中,则会生成doc。
谢谢
编辑配置类
@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")));
}
}
2条答案
按热度按时间oxosxuxt1#
您所面临的问题是由于您对
paths-to-match
使用了1级引用,这导致Springdoc过滤了仅在指定路径上可用的端点。上述属性匹配以
/v2
、/v3
、/status
、/api/v1
开始和结束的端点。但无法匹配可能具有/users/v2/
甚至/v2/users
等形式的端点。虽然不支持完整的正则表达式来指定您希望包含的端点,但有对
**
的基本支持,可以帮助您指定您希望包含/排除的级别。请考虑以下示例
它将包括任何包含
/v1/
的端点。例如/users/v1/
、/v1/dasboard
和/user/v1/dashboard
。它将只匹配从
/v2
开始到n级深度的端点。例如/v2/dashboard
将被包括,但/users/v2/something
将被排除。它只匹配以
/v1
结尾的路径。例如,/users/v1
将被匹配,而/v1/user
将不被匹配。或者,您也可以更新您的
Bean
来做同样的事情。但是请注意,属性文件优先于bean config。wh6knrhe2#
在我的案例中,OpenApi配置中排除了它