我有一个 Controller ,我必须通过让它接受 String
作为 @RequestBody
并返回一个字符串来保持通用,即 String processRequest(@ RequestBody 字符串 json) {...}
我无法控制该 Controller 的源代码,但我可以通过编程方式访问它。
真正要传入和返回的对象定义在一系列请求消息的别处:RequestMessage1.java
、RequestMessage2.java
等。同样是:Response1.java
、Response2.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/