列表 api 不返回 id 给前端可以吗?

2023-07-11 23:40:25 +08:00
 witcat

数据表里 id (单库,自增数字)和 name(长度 10 个以内的英文字符串)是唯一的。
后端不返回 id ,接口都让前端用 name 字符串获取数据,
不是为了防采集。就是觉得很少见到用可读的字符串作为查询的条件,想问一下这样做会有什么问题吗?

3962 次点击
所在节点    程序员
56 条回复
Laysan
2023-07-12 09:14:24 +08:00
把业务 ID 和数据库自增 ID 区分开
LeegoYih
2023-07-12 09:24:04 +08:00
“怕被爬数据而不返回 id”,我只能说是后端开发能力有问题。
即便是自增的也不会有这种问题,资源权限数据权限基本上能覆盖 99%。
Tyaqing
2023-07-12 09:37:48 +08:00
雪花 id,id 中间层 hash 转换都能解决这个问题
dode
2023-07-12 09:41:33 +08:00
前端篡改了 id 还要后台校验
EthanLiu1993
2023-07-12 09:44:12 +08:00
看需求吧,都唯一的用哪个都行
InDom
2023-07-12 09:44:40 +08:00
不要用业务相关字段与代码强绑定。

只要这个 name 是用户产生的,就一定不要在代码中作为关联使用。

你可以不使用 id ,但必须再额外生成一个与用户无关,原则上用户也永远看不到的唯一字段。
DoubleKing
2023-07-12 09:49:06 +08:00
不要用自增的 id ,也不要用 name 这个字段,即使你的 name 不会重复,这会在后期维护中造成不必要的误解
me1onsoda
2023-07-12 09:50:35 +08:00
没搞懂。这么做跟直接用 id 有什么区别吗? id 天然唯一,name 你得分配一个 unique 索引,为什么要做这么多余的事情?
gogo789
2023-07-12 09:52:58 +08:00
这个没啥不可以的,前端查询用的就是一个唯一标识,name 加一个唯一索引,保证不会重复。但是 name 这种二级索引需要回表,查询效率相对 id 的话会差一些。
unco020511
2023-07-12 10:02:27 +08:00
只要是保证唯一,当然是可以的
lisongeee
2023-07-12 10:04:05 +08:00
如果使用 name 作为查询依据,比如之前的微博,你在微博发布动态去艾特别人,等到别人改名字之后你再点击动态里的艾特就显示查无此人,之后另一个用户改成你艾特的名字,你再点击动态里的艾特就跑到后者用户的主页了
hundredFlowers
2023-07-12 10:05:39 +08:00
可以,但没必要
hu1e
2023-07-12 10:07:47 +08:00
不可以,后续你 name 不要编辑更新了吗?
Chad0000
2023-07-12 10:12:56 +08:00
@darkengine
HashId 了解一下,而且这个还可以用来校验。比如把 Id+随机数一起生成 HashId ,根据 Id 加载数据,随机数跟相应的记录一起保存,那么就可以实现某种程度的验证,比如分享某条数据给别人。
monologue520
2023-07-12 10:59:15 +08:00
按照一般约定, 列表需要提供 ID, 能减少很多问题
suyuyu
2023-07-12 11:00:48 +08:00
后续要删改根据什么字段呢?
Huelse
2023-07-12 11:03:41 +08:00
下个需求就是根据 id 单独查询,总不会根据 name 来查吧?
yxzblue
2023-07-12 11:05:24 +08:00
可以,你是后端,想怎么返回都可以的,
darkengine
2023-07-12 11:09:41 +08:00
@Chad0000 混淆 ID 有很多方案,例如每条记录带个 UUID ,前后端交互都根据 UUID 来操作也可以达到目的
baleeny
2023-07-12 11:13:52 +08:00
楼上都误会楼主了,楼主说 name 大家以为是名字,楼主说 name 是唯一的,那不就是跟 uuid ,username 一个意思吗,可以作为查询条件,唯一了有啥不可以的

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

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

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

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

© 2021 V2EX