Определение маршрута Зуула

У меня небольшая проблема с правильной настройкой маршрута Zuul. Вот что у меня есть на данный момент

 zuul:
  routes:
    microservice:
      path: /service/*
      serviceId: session
      sensitiveHeaders: Cookie,Set-Cookie,Authorization
microservice:
  ribbon:
    listOfServers: localhost:8090

В микросервисе у меня есть такой Restcontroller:

@RestController
@RequestMapping("/service")

У меня есть несколько конечных точек в RestController, например:

@RequestMapping(method = { RequestMethod.GET}, value = "/service1", produces = "application/json")

Теперь, когда я отправляю запрос типа localhost:8080/service/service1, он не попадает в ожидаемую конечную точку. Он направляет запрос на localhost:8090/service1 (где ничего не запущено).

Это хорошо работает, если я изменяю контекстный путь следующим образом

@RestController
@RequestMapping("/service")

to

@RestController
@RequestMapping("/")

Я попытался изменить путь с пути: /service/*
на

path: /service/**

но никакого эффекта.

Другой вариант — принудительная маршрутизация на уровне фильтра, но я думаю, что должна быть возможность направить localhost:8080/service/service1 напрямую в микросервис. Любые предложения о том, как я могу сделать это в конфигурации Zuul.

Я не могу использовать параметр URL, так как он несовместим с резервным вариантом, с которым я работаю.


person vasanth    schedule 15.11.2016    source источник


Ответы (1)


Самый простой способ сделать это — остановить удаление префикса; похоже, что он включен по умолчанию.

path: /service/**
stripPrefix: false
person vasanth    schedule 16.11.2016