Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot Swagger覆盖具有相同路径和方法但参数不同的方法_Spring Boot_Swagger_Spring Webflux_Springfox - Fatal编程技术网

Spring boot Swagger覆盖具有相同路径和方法但参数不同的方法

Spring boot Swagger覆盖具有相同路径和方法但参数不同的方法,spring-boot,swagger,spring-webflux,springfox,Spring Boot,Swagger,Spring Webflux,Springfox,Swagger覆盖具有相同路径和方法但参数不同的方法 我有一个springboot2.3.5.RELEASE、webflux和springfox3.0.0的应用程序。我开发了两个GET方法,它们具有相同的路径但参数不同,一个不接收参数并返回列表,另一个用于findAll 情况是,Swagger只生成其中一个方法的文档,有时是列表,另一些是分页。我怎样才能告诉斯威格,它们对我来说是不同的方法和文档 我的控制器代码: @GetMapping(value = "/foo", par

Swagger覆盖具有相同路径和方法但参数不同的方法

我有一个springboot2.3.5.RELEASE、webflux和springfox3.0.0的应用程序。我开发了两个GET方法,它们具有相同的路径但参数不同,一个不接收参数并返回列表,另一个用于findAll

情况是,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() {
//...
}
@GetMapping(value=“/foo”,params={“page”,“size”})
@应答器
公共Mono findByFilter(FooFilterTo filter,
@SortDefault(sort=“id”,direction=sort.direction.DESC)@PageableDefault(value=10)pageablepageable{
//...
}
@GetMapping(value=“/foo”)
@应答器
公共Mono findAll(){
//...
}
我的昂首阔步配置:

@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.*");
    }
}
@配置
@使能招摇过市2
公共类招摇过市配置{
@值(“${app.version}”)
私有字符串版本;
@豆子
公共摘要摘要摘要1(){
返回新摘要(DocumentationType.SWAGGER_2)
.apinfo(this.fooApiInfo())
.enable(真)
.groupName(“foo-api”)
.securityContext(Arrays.asList(securityContext()))
.securitySchemes(Arrays.asList(apiKey()))
.选择()
.path(fooPaths())
.build();
}
私有apinfo fooApiInfo(){
返回新的ApiInfoBuilder()
.标题(“反应性食品”)
.说明(“反应性API”)
.版本(appVersion)
.build();
}
私有谓词路径(){
返回正则表达式(“/foo.*”);
}
}

据我所知,每个HTTP谓词(GET、POST…)只能定义一个API路径,与API使用者发送的可选参数无关

我的建议是使用可选参数
page
size
(即不需要)定义单个GET/foo路径


然后我会在控制器中有一个入口点函数,然后重定向到每个
findByFilter
私有方法或
findAll
私有方法,这取决于
page
&
size
是否定义。

据我所知,您只能通过每个HTTP动词(GET,POST…)定义一个API路径,独立于API使用者发送的可选参数

我的建议是使用可选参数
page
size
(即不需要)定义单个GET/foo路径


然后我会在控制器中有一个入口点函数,然后重定向到每个
findByFilter
私有方法或
findAll
私有方法,这取决于
page
&
size
是否定义了,虽然我对OpenAPI有一些经验,但我从未使用过Spring。Spring允许您在同一路径和HTTP方法下定义多个java方法,并设置条件来选择使用哪个方法。最后,我必须将这两种方法统一在一个方法中,并根据参数检索列表或页面。谢谢。我本想写一些代码来说明我的观点,但是虽然我有一些OpenAPI(Swagger)的经验,但我从来没有使用过Spring。嗨,这就是我最终要做的。Spring允许您在同一路径和HTTP方法下定义多个java方法,并设置条件来选择使用哪个方法。最后,我必须将这两种方法统一在一个方法中,并根据参数检索列表或页面。非常感谢。