Saltar al contenido principal
Cada objeto dentro de X (un Tweet, Mensaje Directo, Usuario, List, etc.) tiene un ID único. Al inicio de la plataforma, estos IDs eran números lo bastante pequeños como para generarse de forma secuencial. Con el tiempo, para adaptarse al crecimiento, los IDs pasaron de 32 bits a 64 bits. Hoy en día, los IDs de X son enteros sin signo de 64 bits, únicos y basados en el tiempo, en lugar de ser secuenciales. El ID completo se compone de una marca de tiempo, un número de worker y un número de secuencia. X desarrolló un servicio interno conocido como “Snowflake” para generar estos IDs de manera consistente (lea más sobre esto en el blog de X). Números tan grandes como 64 bits pueden causar problemas con lenguajes de programación que representan enteros con menos de 64 bits. Un ejemplo de esto es JavaScript, donde los enteros están limitados a 53 bits. Para ofrecer una solución, en los diseños originales de la X API (v1/1.1), los valores de id se devolvían en dos formatos: como enteros y como cadenas.
{"id": 10765432100123456789, "id_str": "10765432100123456789"}
Si ejecutas el comando (10765432100123456789).toString() en la consola de JavaScript de un navegador, el resultado será "10765432100123458000": el entero de 64 bits pierde precisión como resultado de la conversión (esto a veces se denomina “munging”: un cambio destructivo en un conjunto de datos). En las X API hasta la versión 1.1, siempre debes usar la representación en cadena del número para evitar perder precisión. En versiones más recientes de la API, todos los valores enteros grandes se representan como cadenas de forma predeterminada.
I