Возможна ли развязка Springdoc при передаче HttpServletRequest в качестве параметра метода?
У меня ниже контроллер отдыха springboot и я использую springdoc-openapi. Моя служба отдыха springboot должна обслуживать какое-то устаревшее приложение (которое является единственным клиентом, вызывающим эту службу), и мне нужно иметь HttpServletRequest в качестве параметра.
Я создаю документ swagger openapi, и когда я добрался до swagger-ui.html, я вижу, что тело запроса приходит для метода Httprequest param с uri path = '/personhttprequest', но не тогда, когда param равен HttpServletRequest. Я вижу здесь https://springdoc.org/faq.html#what-are-the-ignored-types-in-the-documentation
Но я не понимаю, почему и как я могу получить параметр HttpServletRequest, работающий в пользовательском интерфейсе swagger. Я хочу передать его как text/xml, как я могу заставить его работать для HttpRequest ниже. Я прикрепил scrrenshot для "/ personhttprequest", и вы видите поле для тела запроса, когда появляется xml. Как заставить его работать для "/personhttpservletrequest"?
@RestController
public class PersonController {
@RequestMapping(path = "/personhttprequest", method = RequestMethod.POST,consumes=MediaType.TEXT_XML_VALUE,produces=MediaType.APPLICATION_JSON_VALUE)
public Person personHttpRequest(HttpRequest req) {
Person person = new Person();
return person;
}
@RequestMapping(path = "/personhttpservletrequest", method = RequestMethod.POST,consumes=MediaType.TEXT_XML_VALUE,produces=MediaType.APPLICATION_JSON_VALUE)
public Person personHttpServletRequest(HttpServletRequest req) {
Person person = new Person();
return person;
}
}
Вот хаб git: https://github.com/vmisra2018/sb-example-swaggerdoc
1 ответ
Принципал, локаль, HttpServletRequest и HttpServletResponse и другие вводимые параметры, поддерживаемые Spring MVC, исключены.
Полная документация здесь:
Если вы не хотите игнорировать это:
SpringDocUtils.getConfig().removeRequestWrapperToIgnore(HttpServletRequest.class)