ResponseEntity, возвращаемый @@ ExceptionHandler в @ControllerAdvice, не может быть показан в swagger-ui.html

Что именно пойдет не так, если компилятор применил TCO в таком случае?

Ничто не пойдет не так. Любой язык с правильным устранением вызова хвоста сделает это (SML, OCaml, F #, Haskell и т. Д.). Единственная причина, по которой Scala не заключается в том, что JVM не поддерживает хвостовую рекурсию, и обычный взлом Scala для замены саморекурсивных вызовов в хвостовой позиции с goto не работает в этом случае. Scala в CLR может сделать это, как F #.

0
задан GentleMint 17 January 2019 в 07:45
поделиться

2 ответа

Я наконец выяснил причину. Ключевой симптом «Отображаются предварительные заголовки» обычно означает, что запрос не был отправлен. Но на самом деле я достиг точки останова в GlobalControllerExceptionHandler :: maxUploadSizeExceededException. Таким образом, объяснение для "! Предварительные заголовки показаны" в моем случае должно состоять в том, что запрос отправлен, но данные не полностью отправлены из-за MaxUploadSizeExceededException (загружены только частичные данные). В браузере, если публикация запроса не завершена, ответ будет проглочен. Таким образом, Swagger-UI не может отображать никакого ответа. Если для загрузки файла используется команда curl, я могу получить ожидаемый ответ в выводе.

0
ответ дан GentleMint 17 January 2019 в 07:45
поделиться

Swagger не анализирует вашу реализацию Java.

Если вы хотите добавить больше информации в документацию, вы должны использовать аннотации Swagger:

https://github.com/swagger-api/swagger-core/wiki/Annotations-1.5 .X

В вашем случае что-то вроде:

@ApiResponses(value = { 
      @ApiResponse(code = 500, message = "Maximum upload size exceeded.")
})

Но вы должны добавить эту аннотацию к вашему RestController. ControllerAdvice не считается чванством.

0
ответ дан Simon Martinelli 17 January 2019 в 07:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: