尽量不要使用枚举作为请求和响应参数
在阿里巴巴开发手册中有这样一条强制规定值得大家关注:
【强制】二方库里可以定义枚举类型,参数可以使用枚举类型,但是接口返回值不允许使用枚举类型或者包含枚举类型的 POJO 对象。
通常情况下,服务端(二方库提供者)会先上线,客户端(二方库使用者)陆续更新。
基于这种情况,如果枚举类新增了一个字段,接口返回了这个新字段,客户端未更新的话,必然出现枚举反序列化失败错误。
而枚举作为参数就不一样了,客户端发送的枚举字段在服务端都有(服务端为了兼容性,一般不会删除枚举字段),并不会出现错误。
当然,如果要使用枚举作为接口返回值,也不是没有办法。这就需要自己编写枚举序列化代码,相对来说会麻烦一点。
所以,简单起见,尽量不要使用枚举作为请求和响应参数,而是使用 code
作为请求和响应参数,即枚举仅在项目内部使用。