Запрашивайте сопоставления, оставляйте конкретные случаи вместо того, чтобы ловить все - PullRequest
0 голосов
/ 04 июля 2018

Введение

Мы создали отображение запроса следующим образом:

@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%

1 Ответ

0 голосов
/ 04 июля 2018

Я нашел способ использования переменных пути и регулярных выражений:

@RequestMapping(path = "/{project:^(?!webjars).+}/{resource}/{language}", method = RequestMethod.GET)
public ResponseEntity<Resource> get(
        @PathVariable String project, 
        @PathVariable String resource, 
        @PathVariable String language) throws IOException {

Тем не менее, новые ответы все еще приветствуются!

...