Hal*_*lex 3 swagger spring-boot openapi springdoc springdoc-openapi-ui
这有点奇怪。springdoc-openapi-ui v1.2.32,生成的文档仅包含控制器内的一些映射。
例子:
@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){ ... }
Run Code Online (Sandbox Code Playgroud)
postBar仅针对和服务生成文档getBar,其他路径将被忽略。
我尝试过的:
post. 我重命名是为了避免冲突。如果我向控制器添加另一个服务(带或不带注释标记),它也不会显示在生成的 Swagger 中。例如:
@GetMapping(path="/test")
public String getTest(){
return "test";
}
Run Code Online (Sandbox Code Playgroud)
如果我将此方法添加到全新的控制器中,则会生成文档。
谢谢
编辑 配置类
@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")));
}
}
Run Code Online (Sandbox Code Playgroud)
您面临的问题是由于您使用了 1 级引用paths-to-match,导致 Springdoc 过滤仅在指定路径上可用的端点。
springdoc.paths-to-match=/api/v1,/v2,/v3,/status
Run Code Online (Sandbox Code Playgroud)
上述属性匹配以, , ,开头和结尾的端点。这无法匹配可能具有类似或什至等形式的端点。/v2/v3/status/api/v1/users/v2//v2/users
虽然不支持完整的正则表达式来指定您想要包含的端点,但是对此的基本支持**可以帮助您指定想要包含/排除的级别。
考虑下面的例子
springdoc.paths-to-match=/**/v1/**/
Run Code Online (Sandbox Code Playgroud)
它将包括/v1/其中包含的任何端点。例子如/users/v1/、/v1/dasboard以及/user/v1/dashboard。
springdoc.paths-to-match=/v2/**
Run Code Online (Sandbox Code Playgroud)
它将仅匹配从 n 层开始/v2并深入 n 层的端点。像这样的例子/v2/dashboard将被包括在内,但/users/v2/something将被排除在外。
springdoc.paths-to-match=/**/v1
Run Code Online (Sandbox Code Playgroud)
它只会匹配以 结尾的路径/v1。like 的示例/users/v1将被匹配,而 like 的示例/v1/user将不被匹配。
或者,您也可以更新您的Bean以执行相同的操作。但请注意,属性文件优先于 bean 配置。
springdoc.paths-to-match=/api/v1,/v2,/v3,/status
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15458 次 |
| 最近记录: |