一个接口设计问题,请求返回数据有枚举值时,应该返回枚举还是对应的值呢??

2018-05-21 10:51:45 +08:00
 lkathous

直接抛出问题:

假设有个页面要展示一个商品列表。
商品包含名称,类型,价格三个属性。其中类型在数据库中保存的是整形,1 代表电器,2 代表服装,3 代表食品...

后端使用了微服务架构,请求过程是这样的:
web 请求提供 web 接口的服务 A,服务 A 再请求管理商品的服务 B
web -> 服务 A -> 服务 B

web 要展示商品类型的具体值,但是服务 B 从数据库查询出来的商品类型是枚举
那么问题来了,我应该在哪一个层面将枚举转换成具体值,在 web 还是服务 A 还是服务 B。

我以前是认为一律在展示层做枚举的转换最好(因为我是写后端的,省事)。但是如果客户端是苹果 App,因为 app 不能随时修改,在枚举值有变化时就会出问题。
看同事的代码在哪一层转换的都有,但是我就是纠结,我希望有个规范。

2939 次点击
所在节点    程序员
8 条回复
prasanta
2018-05-21 11:01:35 +08:00
都需要啊
009694
2018-05-21 11:03:54 +08:00
返回原始值的同时返回枚举列表啊
lkathous
2018-05-21 11:26:50 +08:00
@prasanta 都需要,怎么理解?如果服务 B 转了返回给服务 A,服务 A 就不需要转啦
lkathous
2018-05-21 11:31:28 +08:00
@009694 好有道理!!没想到这点
拓展一下,如果有多个客户端然后不同客户端要求相同的枚举展示不同的值咋办
USNaWen
2018-05-21 11:33:31 +08:00
如果你的枚举列表要变动,那就每次都返回枚举+值。
如果写死 or 有同步机制,可以只返回值。(务必写好文档不然维护会哭的。)
不然就放在 A,web 和客户端没法实时修改,B 涉及出入库不好动。
USNaWen
2018-05-21 11:34:31 +08:00
@lkathous。。那啥,都不同展示值了不写个分类处理?
lkathous
2018-05-21 12:13:03 +08:00
@USNaWen 嗯嗯嗯,回答得好详细
009694
2018-05-21 18:38:07 +08:00
@lkathous 楼上回复已经足够了。 。 不过不是所有时候都适合把锅都甩给 app

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

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

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

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

© 2021 V2EX