Я ищу хорошие инструменты для поддержки смены версии модели, используемой в сервисах REST.Инструменты моей мечты будут делать что-то вроде:
- Мой pojo + версия 1.0 config / transformer => Сервис, доступный с 1.0 моей модели
- Мой pojo + версия 1.1 config / transformer =>Сервис доступен с 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: Я искал инструменты, которые могли бы помочь процессу, но все же ничего, что бы хорошо связывало это с отдыхом,Вот ссылки, которые я нашел до сих пор: