跳转到主要内容
在 X 中的每个对象——例如 Tweet、私信、用户、列表等——都有一个唯一的 ID。 在平台早期,这些 ID 的数值足够小,可以按顺序生成。随着时间推移,为了适应增长,ID 从 32 位扩展到 64 位。如今,X 的 ID 是基于时间的唯一 64 位无符号整数,而非顺序生成。完整的 ID 由时间戳、工作节点编号和序列号组成。X 开发了一个名为“Snowflake”的内部服务,用于稳定地生成这些 ID(在 X 博客上了解更多)。 像 64 位这样大的数值可能会在仅能以小于 64 位表示整数的编程语言中引发问题。例如,在 JavaScript 中,整数精度上限为 53 位。为提供规避方案,在最初的 X API(v1/1.1)设计中,ID 值以两种格式返回:既作为整数,也作为字符串。
{"id": 10765432100123456789, "id_str": "10765432100123456789"}
如果你在浏览器的 JavaScript 控制台运行命令 (10765432100123456789).toString(),结果将是 "10765432100123458000"——由于转换,这个 64 位整数发生了精度丢失(有时称为“munging”,即对数据的破坏性更改)。 在最高至 1.1 版本的 X API 中,你应始终使用数字的字符串形式以避免精度丢失。 在较新版本的 API 中,所有较大的整数值默认都以字符串表示。