主要观点:探讨 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
的结构及各属性含义,如count
、cursor
、seenTweetIds
等。TimelineResponse
中不同类型的结构及作用,如TimelineAddEntries
、TimelineCursor
等。- 推文细节页面的响应格式与列表响应类似,“comments”也是推文。
- 各种实体类型的详细结构,如
Tweet
、User
、Media
等及其包含的属性。 - 关于
queryId
使用的推测,如可能用于生成预计算查询结果、控制查询结构等。 - 不同分页方式(如 cursor 分页)的特点及应用场景。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。