在 SpringFox 2 中隐藏来自 Spring MVC 控制器的 return 值

Hide return value from a Spring MVC controller in SpringFox 2

我有一个异步 Spring MVC 控制器 returns Future。 SpringFox 2 将其呈现为:

如何删除它?提前致谢!

我通过向 SprinfFox 的 Docket 添加以下方法调用解决了这个问题:

.genericModelSubstitutes(ResponseEntity.class, CompletableFuture.class)

希望对大家有所帮助。

它不适用于类型。 所以,我们假设这是控制器方法:

public CompletableFuture<ResponseEntity<ResponseDTO>> getDTO() {
    return CompletableFuture.completedFuture(ResponseEntity.ok(new ResponseDTO());
}

仅添加配置:

.genericModelSubstitutes(ResponseEntity.class, CompletableFuture.class)
.directModelSubstitute(CompletableFuture.class, java.lang.Void.class)

它不会起作用。方法需要修改为:

public CompletableFuture getDTO() {
    return CompletableFuture.completedFuture(ResponseEntity.ok(new ResponseDTO());
}

然后 CompletableFuture 定义将从 OpenAPI 规范中消失。

找到更好的方法。我正在使用 springfox 版本 2.8.0。如果您查看他们的文档 (RTFM),您可以使用类型适配器将类型 类 解析为 POJO。此配置的示例如下:

import com.fasterxml.classmate.TypeResolver;

@Configuration
@EnableSwagger2
public class SpringFoxConfig {

    @Autowired
    private TypeResolver typeResolver;

    @Bean
    public Docket apiDocket() {
    return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.basePackage("base package"))
            .paths(PathSelectors.any())
            .build()
            .genericModelSubstitutes(ResponseEntity.class)
            .alternateTypeRules(

 newRule(typeResolver.resolve(CompletableFuture.class,
                            typeResolver.resolve(ResponseEntity.class, WildcardType.class)),
                            typeResolver.resolve(WildcardType.class)))
            .useDefaultResponseMessages(false)
            .pathMapping("/");
}

控制器方法可以定义类型:

public CompletableFuture<ResponseEntity<ResponseDTO>> getDTO() {
    return CompletableFuture.completedFuture(ResponseEntity.ok(new ResponseDTO());
}