Хорошие инструменты для управления версиями моделей REST для Java

Я ищу хорошие инструменты для поддержки изменения версии модели, используемой в службах REST. Инструменты моей мечты будут делать что-то вроде:

  • Мой pojo + конфигурация/трансформер версии 1.0 => Сервис доступен с 1.0 моей модели
  • Мой pojo + конфигурация/трансформер версии 1.1 => Сервис доступен с 1.1 моей модели

В моем конкретном случае мне не нужно выполнять обратное преобразование, так как мой REST-сервис обеспечивает только поиск данных и никогда ничего не сохраняет, но я не возражаю против использования инструмента, выполняющего и то, и другое :-)

Решение, которое я рассматривается добавление пользовательских аннотаций в мой pojo (версия + имя) и создание генератора кода, который будет генерировать JSON/XML на основе моего pojo на основе номера версии. Хотя здесь я чувствую, что заново изобретаю велосипед.

Редактировать: Вот пример изменения, которое можно внести из версии 1 в версию 1.1:

Версия 1: Человек имя фамилия

Версия 1.1 Человек имя фамилия дата рождения

Если вы обращаетесь к API с версией 1.0, вы не получаете атрибут даты рождения — он доступен только в версии 1.1. Мне нужна поддержка инструментов для предоставления доступа к этим службам, где я могу настроить это при условии, что мой pojo (который в настоящее время похож на версию 1.1), я хочу сделать доступной версию 1.0, которая не отображает эти значения.

Другими юридическими изменениями в модели могут быть удаление атрибута или переименование атрибута (или даже переименование сущности).

Редактировать 2: Цифровой Джоэл упомянул в комментарии, что для обсуждения версий API вы должны прочитать https://stackoverflow.com/posts/9789756/.

Самый простой способ отказаться от управления версиями — это, конечно, не вносить обратные изменения API, а изменить бизнес, поэтому это не всегда возможно. Меня интересует, как упростить обработку этих изменений, поэтому мой вопрос.

Редактировать 3: Я искал инструменты, которые могли бы помочь в этом процессе, но до сих пор ничего не связывает это с отдыхом. Вот ссылки, которые я нашел до сих пор:

9
задан Community 23 May 2017 в 10:29
поделиться