如何在Swagger中为无法访问的控制器记录其他模型?

use*_*183 3 java swagger spring-boot springfox

我有一个控制器,必须通过使其接受Stringas @RequestBody并返回String 来保持通用性,即String processRequest(@RequestBody String json) {...}

我无法控制该控制器的源代码,但可以通过编程来实现。

这会在传递和返回的真正对象是在一系列的请求消息的其他地方定义:RequestMessage1.javaRequestMessage2.java,等反应同样是:Response1.javaResponse2.java1

该控制器还插手这些请求的处理,以一个Processor看起来是这样的(Request1Processor.javaResponse1 process(RequestMessage1 message)

我的问题是这个。

有没有一种方法可以配置swagger,使其公开REST控制器类的终结点,即processRequest,但将所有这些Processor类及其输入和输出显示为该控制器的文档?

作为文档的一部分,我看到了添加“不可达”模型的功能。我尝试了像这样的文档中的方法:

@Autowired
private TypeResolver typeResolver;

@Bean
public Docket api() {
  return new Docket(DocumentationType.SWAGGER_2)
      .select()
      .apis(RequestHandlerSelectors.any())
      .paths(PathSelectors.any())
      .build()
      .additionalModels(typeResolver.resolve(Date.class));
}
Run Code Online (Sandbox Code Playgroud)

但是,附加的Date模型没有显示在swagger-ui.html中。

我在这里做错了什么?

此外,是否有办法以某种方式显示RequestMessage1类型将对做出响应Response1

Vla*_*ier 7

Dateclass是一个不利于测试的示例,因为它被视为字符串

资料类型

...

  • 字符串(包括日期和文件)

使用您要另外记录的真实模型再试一次:

@Bean
public Docket api(TypeResolver typeResolver) {
    return new Docket(DocumentationType.SWAGGER_2)
          .select()
          .apis(RequestHandlerSelectors.any())
          .paths(PathSelectors.any())
          .build()
          .additionalModels(typeResolver.resolve(RequestMessage1.class, Response1.class)));
}
Run Code Online (Sandbox Code Playgroud)