后端接口枚举值和对应的描述是如何返回的?

36 天前
kqq19930511  kqq19930511

例如有以下的枚举值:

DANGER(0, "危急"),
SERIOUS(1, "严重"),
GENERAL(2, "一般")

大家平时开发用的什么方案?或者 java springboot 中有通用的解决方案吗?

2709 次点击
所在节点   Java  Java
37 条回复
spritecn
spritecn
36 天前
我这边大概这样:
权限类经常改的用 2
大部分情况 status,type 类的用 1(一般后端添加了枚举后,前端也得做对应界面功能,不然为啥要改)
RandomJoke
RandomJoke
36 天前
一般场景 enum 存储 SERIOUS 字符串,存储一般情况都不值钱。不太变动的场景直接返回,经常变动的返回 desc 以及 enum 字符串
shuangbiaog
shuangbiaog
36 天前
一般用方法 1 吧,除了 4 都可行,如果字典和数据要独立,那应该拆分成两个接口
kqq19930511
kqq19930511
36 天前
@spritecn #1 第二种有通用解决方案吗?每次都得遍历去设置描述?
kqq19930511
kqq19930511
36 天前
@shuangbiaog #3 如果拆开,每次前端展示列表的页面,都得请求两次接口才能展示了,合并成一个不好吗?
shuangbiaog
shuangbiaog
36 天前
@kqq19930511 不符合设计原则,碰到分页场景也不好处理,另外请求两次不一定就比请求一次慢
fciasth
fciasth
36 天前
第二种,用 AOP+注解实现
jeepc
jeepc
36 天前
@kqq19930511 #4 转成 map
kqq19930511
kqq19930511
36 天前
@fciasth #7 自己实现的?还是有开源解决方案
DonaldY
DonaldY
36 天前
我们做法是返回:code (枚举值)、desc (对应 code 描述)
存储有本地、缓存、数据库,达到后端更新,前端不需要改动。

以及 desc 描述,国际化多语言,搭配 i18n
fengpan567
fengpan567
36 天前
没有专门的枚举字典接口?
kqq19930511
kqq19930511
36 天前
@DonaldY #10 返回结果如何组织的?方案二还是方案四?
vikaptain
vikaptain
36 天前
我一般是具体的数据返回 State:枚举值,返回 StateDescription:具体的描述内容。
接口文档列举所有的枚举值和描述。
w292614191
w292614191
36 天前
可以看下这个: https://crane4j.cn/

但实际业务中还是比较复杂,都是前端转一遍。
DonaldY
DonaldY
36 天前
@kqq19930511
@DonaldY
类似这样,前端直接展示就行
[{
"code": 0,
"desc": "危急"
}]
lasuar
lasuar
36 天前
业务复杂后,设计一个字典表,支持在管理后台修改,其他需要的页面传参拉取对应的字典枚举就行了。
HaibaraDP
36 天前
自定义序列化返回枚举对象,返回{"code":0,"name":"危急"},另外再提供一个字典接口
CyouYamato
36 天前
第一种, 重新部署就是多会摸鱼时间呗.自己业余时间全栈项目也是第一种, 后端用的 Nest.js, 对象,枚举 直接往前端复制.没啥成本.
lasuar
36 天前
业务前期不需要设计字典表,浪费人力资源,把枚举映射发给前端即可
PRStarDust
35 天前
用的 jeecgboot 框架,它有单独的字典表,每次启动的时候会缓存到 redis 里。之后前端在登录后好像会调用字典接口获取所有字典项。最后还用 aop+注解自动给加了字典注解的字段额外返回一个叫做 [原字段名_dictText] 的字段,里面放的是字段 code 对应的描述,这样前端调用列表查询接口就不用额外再查直接显示就行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1112535

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX