У меня есть API отдыха для получения пользователя. Когда я добавляю новое значение к одному из атрибутов enum в ответе, потребители API перестают работать до обновления. Мое требование - поддерживать обратную совместимость API, когда старые клиенты используют значение по умолчанию, если получены неизвестные значения перечисления.
GET <BASE_URL>/user/{id}
Ответ - JSON, представленный классом Employee. модель Employee имеет атрибут «тип», который является перечислением java.
class Employee {
private String id;
private String name;
private EmploymentType type;
}
enum EmploymentType{
FULL_TIME, PART_TIME
}
Когда я добавляю новое значение перечисления EmploymentType (скажем, «КОНТРАКТ»), мой клиент разрывается, потому что он не может десериализовать значение КОНТРАКТ. Это нарушает обратную совместимость API. Каждый раз, когда перечисление моего сервера развивается, клиент вынужден обновлять значения перечисления.
Как лучше всего избегать этого и использовать значение по умолчанию, когда сервер отправляет неизвестное значение?
Я использую стек с пружинной загрузкой и десериализатором Джексона. Было бы здорово, если бы вы могли дать мне ответ, который не зависит от стека и фреймворка.