Объедините несколько точек REST в одну - PullRequest
0 голосов
/ 05 марта 2019

Я ищу шаблон проектирования / библиотеку для объединения нескольких разных конечных точек, чтобы они были видны как одна.

Допустим, у меня есть 3 конечные точки, каждая из которых возвращает объекты одного типа, конечно, объекты разные и имеют уникальный идентификатор. Я хочу создать конечную точку, которая вызывает их все, объединяет результаты, фильтрует и сортирует страницу, а затем возвращает результаты.

Может быть много объектов, поэтому было бы хорошо иметь кеширование, чтобы вызывать эти три конечные точки только тогда, когда что-то изменилось (скажем, я каким-то образом знаю, нужно ли мне обновлять кеш).

Я предполагаю, что есть библиотека, которая может соединять несколько конечных точек в одну, кэшировать результаты и предоставлять фильтр, сортировку и страницу. Что-то вроде, скажем, репозитория Spring: однако данные читаются не из базы данных, а из кэша, который собирает их с конечных точек REST.

Я рассматривал шаблон проектирования Gateway, такой как Spring Gateway или Zuul Proxy, но, похоже, это всего лишь оболочка, без возможности обработки данных.

Конечно, я могу делать такие вещи вручную:

  • создать контроллер
  • вызов трех конечных точек (при необходимости для обновления)
  • заполнить кеш
  • чтение данных из кэша, сортировка, фильтрация и возврат их

но если мне нужно сделать это несколько раз, я ищу библиотеку для этого.

1 Ответ

0 голосов
/ 16 апреля 2019

Вы можете реализовать GatewayFilterFactory с агрегацией и кэшированием в Spring Cloud Gateway. Но похоже на создание контроллера.

...