X(Twitter)主页时间线的 API 设计 | Trekhleb

主要观点:探讨 X(Twitter)的主页时间线(x.com/home)API 设计,包括获取推文列表、排序分页、返回层次/链接实体、获取推文详情、点赞推文等方面,分析其采用的方法及背后的考虑。
关键信息

  • API 设计采用多种方法混合,如通过 POST 请求获取数据,URL 中的graphql部分表明使用 GraphQL 基础的 API,请求体类似“功能性”RPC 调用但可能使用了 GraphQL 特征。
  • queryId在 API 中多处使用,可能用于性能优化、缓存、调试或追踪等目的。
  • TimelineResponse包含指令列表,而非直接的推文列表,通过TimelineAddEntries等类型包含不同实体。
  • 解决链接/层次实体问题时,大部分依赖数据在首次调用时嵌入响应,部分实体连接方式不同。
  • 排序通过sortIndex属性,对应 Snowflake ID 实现 chronological 排序。
  • 推文的“Actions”菜单通过TimelineItem.content.feedbackInfo.feedbackKeys数组与推文链接,且可能形成树状结构。
  • 获取推文列表通过 POST 调用,获取推文详情通过 GET 调用,看似不一致。
  • 点赞推文通过 POST 请求到特定端点。
    重要细节
  • TimelineRequest的结构及各属性含义,如countcursorseenTweetIds等。
  • TimelineResponse中不同类型的结构及作用,如TimelineAddEntriesTimelineCursor等。
  • 推文细节页面的响应格式与列表响应类似,“comments”也是推文。
  • 各种实体类型的详细结构,如TweetUserMedia等及其包含的属性。
  • 关于queryId使用的推测,如可能用于生成预计算查询结果、控制查询结构等。
  • 不同分页方式(如 cursor 分页)的特点及应用场景。
阅读 10
0 条评论