Swagger 覆盖相同路径和方法但参数不同的方法
Swagger overwrites methods with the same path and method but different parameters
Swagger 覆盖路径和方法相同但参数不同的方法
我有一个带有 Spring Boot 2.3.5.RELEASE、webflux 和 springfox 3.0.0 的应用程序。我开发了两种路径相同但参数不同的 GET 方法,一种不接收参数,returns 一个列表,另一种用于 findAll。
情况是Swagger只生成其中一种方法的文档,有时是列表,其他是分页。我如何告诉 swagger 它们是不同的方法并为我记录两者?
我的控制器代码:
@GetMapping(value = "/foo", params = {"page", "size"})
@ResponseBody
public Mono<ResponseEntity<Mono<Page<FooDTO>>>> findByFilter(FooFilterDTO filter,
@SortDefault(sort = "id", direction = Sort.Direction.DESC) @PageableDefault(value = 10) Pageable pageable) {
//...
}
@GetMapping(value = "/foo")
@ResponseBody
public Mono<ResponseEntity<Flux<FooDTO>>> findAll() {
//...
}
我的 Swagger 配置:
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Value("${app.version}")
private String version;
@Bean
public Docket docketUsersV1() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(this.fooApiInfo())
.enable(true)
.groupName("foo-api")
.securityContexts(Arrays.asList(securityContext()))
.securitySchemes(Arrays.asList(apiKey()))
.select()
.paths(fooPaths())
.build();
}
private ApiInfo fooApiInfo() {
return new ApiInfoBuilder()
.title("Reactive Foo")
.description("Reactive API")
.version(appVersion)
.build();
}
private Predicate<String> fooPaths() {
return regex("/foo.*");
}
}
据我所知,每个 HTTP 动词(GET、POST...)只能定义一个 API 路径,与可选参数 API 无关消费者发送。
我的建议是定义一个 GET /foo 路径,带有可选参数 page
& size
(即不需要)
然后我会在控制器中有一个入口点函数,然后重定向到每个 findByFilter
私有方法或 findAll
私有方法,具体取决于 page
和 size
是否定义。
Swagger 覆盖路径和方法相同但参数不同的方法
我有一个带有 Spring Boot 2.3.5.RELEASE、webflux 和 springfox 3.0.0 的应用程序。我开发了两种路径相同但参数不同的 GET 方法,一种不接收参数,returns 一个列表,另一种用于 findAll。
情况是Swagger只生成其中一种方法的文档,有时是列表,其他是分页。我如何告诉 swagger 它们是不同的方法并为我记录两者?
我的控制器代码:
@GetMapping(value = "/foo", params = {"page", "size"})
@ResponseBody
public Mono<ResponseEntity<Mono<Page<FooDTO>>>> findByFilter(FooFilterDTO filter,
@SortDefault(sort = "id", direction = Sort.Direction.DESC) @PageableDefault(value = 10) Pageable pageable) {
//...
}
@GetMapping(value = "/foo")
@ResponseBody
public Mono<ResponseEntity<Flux<FooDTO>>> findAll() {
//...
}
我的 Swagger 配置:
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Value("${app.version}")
private String version;
@Bean
public Docket docketUsersV1() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(this.fooApiInfo())
.enable(true)
.groupName("foo-api")
.securityContexts(Arrays.asList(securityContext()))
.securitySchemes(Arrays.asList(apiKey()))
.select()
.paths(fooPaths())
.build();
}
private ApiInfo fooApiInfo() {
return new ApiInfoBuilder()
.title("Reactive Foo")
.description("Reactive API")
.version(appVersion)
.build();
}
private Predicate<String> fooPaths() {
return regex("/foo.*");
}
}
据我所知,每个 HTTP 动词(GET、POST...)只能定义一个 API 路径,与可选参数 API 无关消费者发送。
我的建议是定义一个 GET /foo 路径,带有可选参数 page
& size
(即不需要)
然后我会在控制器中有一个入口点函数,然后重定向到每个 findByFilter
私有方法或 findAll
私有方法,具体取决于 page
和 size
是否定义。