У меня есть контроллер, который я должен сохранять универсальным, чтобы он принимал String
как @RequestBody
и возвращал строку, то есть String processRequest(@RequestBody String json) {...}
У меня нет контроля над исходным кодом этого контроллера, но я могу получить его программно.
Реальные объекты, которые будут переданы и возвращены, определены в другом месте в последовательности сообщений запроса: RequestMessage1.java
, RequestMessage2.java
и т. Д. Ответы аналогичны: Response1.java
, Response2.java1
.
Контроллер также передает обработку этих запросов в Processor
, который выглядит примерно так (Request1Processor.java
): Response1 process(RequestMessage1 message)
.
Мой вопрос такой.
Есть ли способ настроить swagger таким образом, чтобы он предоставлял конечную точку класса контроллера REST, т. Е. processRequest
, но отображал все эти классы процессора с их входами и выходами в качестве документации для этого контроллера?
В документации я видел возможность добавлять модели, которые «недоступны». Я попробовал метод, описанный в документации:
@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
?