近期搜索分页
介绍
- 近期搜索端点会针对查询至少返回一页结果;如果还有更多页面可用,会在 JSON 响应中提供一个 next_token。为获取所有匹配的 Post,可重复此过程,直到响应中不再包含该 token。
- next_token 不会过期。无论在何时发起请求,多次使用相同的 next_token 值都会得到相同的结果。
-
Post 按时间逆序、基于 UTC 时区返回。这一点在单个页面内以及跨多个页面都成立:
- 第一次响应中的第一个 Post 是与你的查询匹配的最新 Post。
- 最后一次响应中的最后一个 Post 是与你的查询匹配的最早 Post。
- 通过 max_results 请求参数可以配置每个响应返回的 Post 数量。默认值为 10,最大为 100。
- 任何分页实现都需要从响应负载中解析 next_token,并将其包含在“下一页”的搜索请求中。有关如何构建这些“下一页”请求的更多详情,请见下文。
- 获取历史 - 从关注的时间范围请求匹配的 Post。这类请求通常用于一次性的历史研究。搜索请求可以基于 start_time 和 end_time 请求参数。近期搜索端点将按时间逆序返回 Post,从最新的匹配 Post 开始。
- 轮询 - 请求自上一次收到的 Post 以来新发布的匹配 Post。这些用例通常侧重近实时场景,特点是频繁请求以“监听”新的目标 Post。近期搜索端点提供 since_id 请求参数以支持“轮询”模式。为便于按 Post ID 导航,还提供了 until_id 请求参数。
检索历史数据
轮询与监听用例
https://api.x.com/2/tweets/search/recent?query=snow&since_id=12000
当有更多可用数据并提供了 next token 时,只需要第一页结果中的 newest_id 值。每一页数据都会包含 newest_id 和 oldest_id 值,但仅第一页提供的值是下一次按计划进行的轮询请求所需的唯一值。因此,如果你在实现轮询方案,或按 ID 范围搜索 Post,分页逻辑会稍微更复杂。
现在假设又有 18 条匹配的 Post。该 endpoint 将首先返回包含完整一页 data 的响应,并附带一个 next_token,用于在这五分钟时间段内请求下一页数据。它还会包含五分钟后下一次轮询间隔所需的最新 Post ID。