关于接口查询条件使用id而不使用其他唯一字段的思考
2024-10-01 15:22:24

最近前端问了我一个问题: 为什么某个接口一定要用id作为查询条件,而不是用其他的唯一字段。前端之所以这么问是因为他可以直接获取到那个唯一字段,不需要做其他的操作再去获取id。

我给的回答是查询一般都是使用id,因为id肯定是唯一的。但这解释不了为什么不用其他的唯一字段。

所以聊完之后我还是思考了一下,并且搜索了下得出结论:

  1. 唯一性 id一般情况下是作为主键,是肯定唯一的,与业务无关,是不会变动的。而其他字段与业务相关,但前可能是唯一的,但如果未来因为业务变动,有可能变非唯一;
  2. 性能 id作为主键,有主键索引,速度会更快。且一般是数字类型,索引速度比字符串类型更快;

还有一些其他原因:比如id不可被修改等。

参考

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