java - 如何在 Swagger 中为无法访问的 Controller 记录其他模型?

标签 java spring-boot swagger springfox

我有一个 Controller ,我必须通过让它接受 String 作为 @RequestBody 并返回一个字符串来保持通用,即 String processRequest(@ RequestBody 字符串 json) {...}

我无法控制该 Controller 的源代码,但我可以通过编程方式访问它。

真正要传入和返回的对象定义在一系列请求消息的别处:RequestMessage1.javaRequestMessage2.java等。同样是:Response1.javaResponse2.java1

Controller 还将这些请求的处理交给一个看起来像这样的 Processor (Request1Processor.java): Response1 process(RequestMessage1 message)

我的问题是这样的。

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

我在文档中看到了添加“无法访问”的模型的能力。我尝试了这样的文档中的方法:

@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));
}

但是,额外的 Date 模型没有出现在 swagger-ui.html 中。

我在这里做错了什么?

另外,有没有办法以某种方式表明 RequestMessage1 类型将具有 Response1 的响应?

最佳答案

Date 类是一个不利的测试示例,因为它被视为 string .

Data Types

...

  • string (this includes dates and files)

用你想额外记录的真实模型再试一次:

@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)));
}

关于java - 如何在 Swagger 中为无法访问的 Controller 记录其他模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51073130/

相关文章:

java - 为什么我不能用 try/catch 子句处理 Exception e?

java - 无法使用spring + apache-poi上传excel文件

java - 错误 java.lang.ClassNotFoundException : com. fastxml.jackson.databind.Module

java - 解压并重新压缩 jar 后为 "no main manifest attribute"

json - Swagger:从参数示例值中删除类属性

asynchronous - 等同于非 HTTP 协议(protocol)(​​如 AMQP)的开放 API 规范

java - 查找整数的最小 "factorization"到平方数

c# - Java 中的 DataTable 等效项

java - PUT:PathVariable 和 RequestParam 不能一起工作

python - 在另一个文件中注释 Flask-Resource