1
ayase252 2019-12-06 03:52:42 +08:00 via iPhone
0/1 也好男 /女也好,接口定下来就好。
至于你的考虑,这个只是前端和后端的约定。前端不一定会直接显示从 API 中获取的值。 |
2
luckyx 2019-12-06 04:43:57 +08:00
const gender = {
'0': '男', '1': '女' } gender(item.gender) |
3
lihongming 2019-12-06 04:45:08 +08:00 via iPhone 6
相比于汉字,传数字给前端会有很多优势,比如:
数据传输量更少( json 中汉字是三个字节而数字是一个字节) 更容易国际化(具体显示什么文字由客户端决定) 你传给客户端的可能不只是一条数据,而是个列表。客户端用数字进行过滤 /排序等操作的速度会比汉字更节约资源 …… 顺便歪个楼:我觉得应该 0 表示女,1 表示男,这样更符合某个群体的认知 233 匿了…… |
4
Pastsong 2019-12-06 04:58:47 +08:00 1
整挺好的,万一你们以后扩展了 LGBTTQQIAAP,写汉字能写死
|
5
gebishushu OP |
6
manami 2019-12-06 06:52:41 +08:00 via Android
写个枚举类转换呀
|
7
dangyuluo 2019-12-06 06:56:08 +08:00
|
8
msg7086 2019-12-06 07:35:07 +08:00
Gender 是个枚举,当然是枚举类型了。
|
9
kaiyiliu123 2019-12-06 07:37:22 +08:00 via Android
那后期是 4 种 0 1 0→1 1→0 哈哈
|
10
happyz90 2019-12-06 07:42:35 +08:00 via Android
Facebook 有 56 种性别
|
11
mayx 2019-12-06 07:50:17 +08:00 via Android
直接返回文字容易被 xss
|
12
opengps 2019-12-06 08:04:45 +08:00 via Android 1
我觉得 0 应当是个默认值,不做实际业务赋值
|
14
lucifer9 2019-12-06 08:28:04 +08:00
就怕以后这个必须用复选
|
15
sunziren 2019-12-06 08:42:53 +08:00 2
谢邀,人在美国,刚下飞机。匿了。
|
16
liuguangxuan 2019-12-06 08:44:26 +08:00 via Android
大晚上的都不休息的吗?
|
18
Chingim 2019-12-06 09:37:08 +08:00 via Android
推荐接口语义化,传 male 和 female,只在最后保存到数据库时做一下转化。
1. 抓包时数据内容清晰,看到 0/1 你可以还要再想一下。便于调试和测试。 2. 前后端的代码里使用的都是语义化的值,而不是一堆 01,代码可读性得以提高。 至于增加的字节,有压缩不是事 |
19
w292614191 2019-12-06 09:48:42 +08:00
|
20
cyndihuifei 2019-12-06 10:02:04 +08:00
@w292614191 male / female 0/1,哪个容易想?
|
21
mayx 2019-12-06 10:10:46 +08:00 via Android
@Chingim 假如后端由于某些原因存储了一个 html 标签,前端不假思索的插了进去,那么这个标签就会被执行,当然如果后端非常安全,保证数据不会被篡改,那么倒是也无所谓
|
22
Chingim 2019-12-06 10:12:41 +08:00 via Android
@w292614191 Male 是 0 还是 female 是 0 ?如果是多个字段都是 01 呢,你能马上明白 0123 分别指的是什么吗?
|
24
tgich 2019-12-06 10:18:38 +08:00
怎么着都行,软件行业没有关于这方面的规定
|
25
w292614191 2019-12-06 10:57:39 +08:00
|
26
wc951 2019-12-06 11:22:31 +08:00 via Android
你确定你的接口只给前端用?
|
27
shintendo 2019-12-06 11:31:24 +08:00 1
以什么形式展示,应该是前端的事情。你返回个男女,乍看是方便前端直接用,如果后期改需求了,要求显示男生 /女生,先生 /小姐,♂/♀,西装小人图标 /裙子小人图标,蓝色头像背景 /粉色头像背景,怎么办?前端还得根据你传的“男”/“女”去做映射后才能用,那为什么不直接传 0/1 呢?
|
28
wwcxjun 2019-12-06 11:49:17 +08:00
我是传 1/2 0 作为默认值 另外还会传 男 /女 至于怎么用 那就是前端的事了。
|
29
Chingim 2019-12-06 12:20:05 +08:00 via Android
@w292614191 这跟展示无关。
比如数据传输用 { “gender”: 0, “role”: 2 } 抓包或者看日志,你能马上知道是这个是男还是女吗?代码里的逻辑写 if (gender === 0) ,可读性好吗? 如果数据传输用 { “gender”: “male”, “role”: “admin” } 那是不是可以解决上面的问题? |
30
imn1 2019-12-06 13:13:33 +08:00
0/1,性别不仅用在一种场合,多种场合,称呼不同都可能用到性别判断
而且,后端返回,除非特定内容(如文章),最好不要用需要编码识别的方式,尽可能 ASCII 搞定 |
31
lxml 2019-12-06 13:15:46 +08:00 via Android 2
说 0/1 的都怎么想的……一点接口设计思维都没有,除了嵌入式等或者极致性能场合,一切都应该以可读性可维护性为基准。
|
32
tuean 2019-12-06 16:24:42 +08:00
个人经验 遇到这种情况一般会这么干
{ gender: 0/1 genderValue: 男 /女 } 多加个展示字段,通过枚举变更后全部返回,爱用哪个用哪个 |
33
heiybb 2019-12-06 16:33:09 +08:00
最近看到个 GenderAPI 根据名字判断性别(仅限英文名
|
34
fanpei0121 2019-12-06 17:33:41 +08:00
返回 0 和 1,前后端都分离了,为什么前端不能自己决定展示什么,为什么后端还要负责考虑前端需要怎么显示?
文档写清楚就行了,前后端互不干扰最好 |
35
w292614191 2019-12-06 22:36:01 +08:00
|
36
Chingim 2019-12-07 08:42:35 +08:00 via Android 1
@w292614191 如果你不认可代码可读性的重要性,那的确没啥区别,我也只是鸡同鸭讲
|
37
techme 2019-12-07 14:07:20 +08:00
所以说人妖是需求变动的幕后黑手,哈哈
|
38
EscYezi 2019-12-07 14:34:49 +08:00 via iPhone
这个不得看前端想要哪种么……
|