Возможна ли развязка 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


person Vivek Misra    schedule 05.07.2020    source источник
comment
Как вы упомянули Principal, Locale, HttpServletRequest and HttpServletResponse and other injectable parameters supported by Spring MVC are excluded., springdoc не игнорирует их.   -  person SSK    schedule 07.07.2020
comment
Если springdoc не игнорирует, то почему в пользовательском интерфейсе swagger, когда я хочу попробовать его для / personhttpservletrequest, поле запроса не появляется? он появляется для httprequest. Код находится на гитхабе.   -  person Vivek Misra    schedule 08.07.2020


Ответы (1)


Принципал, локаль, HttpServletRequest и HttpServletResponse, а также другие вводимые параметры, поддерживаемые Spring MVC, исключены.

Полная документация здесь:

Если вы не хотите игнорировать это:

    SpringDocUtils.getConfig().removeRequestWrapperToIgnore(HttpServletRequest.class)
person Community    schedule 13.08.2020