Введение
Мы создали отображение запроса следующим образом:
@RequestMapping(path = "/{project}/{resource}/{language}", method = RequestMethod.GET)
public ResponseEntity<Resource> get(
@PathVariable String project,
@PathVariable String resource,
@PathVariable String language) throws IOException {
Мы могли бы изменить путь и добавить префикс, чтобы избежать проблем, но это было решено как нежелательное.
path = "/generateReport/{project}/{resource}/{language}"
К сожалению, это текущее отображение создает проблемы с swagger-ui.html.
Когда мы вызываем его с: http://localhost:8023/swagger-ui.html, страница пуста, потому что все запросы, следующие за форматом a/b/c
, перехвачены.
Примеры:
<link rel="stylesheet" type="text/css" href="webjars/springfox-swagger-ui/springfox.css?v=2.8.0-SNAPSHOT" >
<link rel="stylesheet" type="text/css" href="webjars/springfox-swagger-ui/swagger-ui.css?v=2.8.0-SNAPSHOT" >
<link rel="icon" type="image/png" href="webjars/springfox-swagger-ui/favicon-32x32.png?v=2.8.0-SNAPSHOT" sizes="32x32" />
<link rel="icon" type="image/png" href="webjars/springfox-swagger-ui/favicon-16x16.png?v=2.8.0-SNAPSHOT" sizes="16x16" />
И
<script src="webjars/springfox-swagger-ui/swagger-ui-bundle.js?v=2.8.0-SNAPSHOT"> </script>
<script src="webjars/springfox-swagger-ui/swagger-ui-standalone-preset.js?v=2.8.0-SNAPSHOT"> </script>
<script src="webjars/springfox-swagger-ui/springfox.js?v=2.8.0-SNAPSHOT"> </script>
Вопрос
Так как мне с этим справиться? Есть ли способ указать, что запросы, начинающиеся с webjars
, должны перенаправляться в другое место?
Я попытался использовать ключевое слово consumes
, и это работает с точки зрения клиента (хотя мне не нравится использовать такой тип контента).
consumes = MediaType.APPLICATION_JSON_VALUE
.
К сожалению, теперь я получаю следующее при попытке доступа к swagger-ui.html:
DefaultHandlerExceptionResolver Resolved exception caused by Handler execution: org.springframework.web.HttpMediaTypeNotSupportedException: Content type '' not supported
HTML генерируется для swagger-ui.html, но все необходимые ресурсы не могут быть загружены.
Есть идеи?
Обновление
Я нашел способ использования переменных пути и регулярных выражений:
@RequestMapping(path = "/{project:^(?!webjars).+}/{resource}/{language}", method = RequestMethod.GET)
public ResponseEntity<Resource> get(
@PathVariable String project,
@PathVariable String resource,
@PathVariable String language) throws IOException {
Тем не менее, новые ответы по-прежнему приветствуются, поскольку мне это не нравится 100%