具有Enum属性的REST API响应协定。枚举演变时客户端中断

时间:2019-05-07 08:28:20

标签: rest enums jackson api-design

我有一个Rest API来获取用户。当我向响应中的枚举属性之一添加新值时,API的使用者将中断直到升级。我的要求是保持API向后兼容,如果收到未知的枚举值,则旧客户端将使用默认值。

GET <BASE_URL>/user/{id}

响应是JSON,由Employee类表示。 Employee模型的属性'type'是一个Java枚举。

class Employee {
     private String id;
     private String name;
     private EmploymentType type;
}

enum EmploymentType{
     FULL_TIME, PART_TIME
}

当我添加一个新的EmploymentType枚举值(例如'CONTRACT')时,我的客户中断了,因为它无法反序列化值CONTRACT。这破坏了API的向后兼容性。每当我的服务器枚举发生变化时,客户端都会被强制更新枚举值。

避免这种情况并在服务器发送未知值时使用默认值的最佳实践是什么?

我正在使用的堆栈是带有杰克逊解串器的弹簧靴。如果您能给我一个独立于堆栈和框架的答案,那就太好了。

0 个答案:

没有答案