以下伪代码概述了您可以使用数据沿袭 API 从所有可用区域中提取数据沿袭链接的过程。
- 输入设置:
linksToFetch
= 5(从所有区域提取的链接数)regionalPageToken
= ""(上次收到的用于分页的区域级页面令牌)- 创建:
- 名为
regions
的所有扇出区域列表。 - 无法访问的名为
unreachable
的区域列表。 - 找到的名为
foundLinks
的链接的空列表。 - 空变量
nextPageToken
和nextRegionalPageToken
。 - 空变量
lastRegion
。 - 空变量
lastRegionLinksCount
。
- 名为
- 按字母顺序对
regions
排序。 - 解析
regionalPageToken
- 如果为空,请继续执行第 4 步
- 如果值不为空,则
- 通过将第一个点拆分为两个段来解析
regionalPageToken
- 过滤掉已解析的
regionalPageToken
后面的区域(按字母顺序)以过滤掉区域。 - 请存储第二个细分,以便在所有 projects.locations.searchLinks 调用中使用。
- 通过将第一个点拆分为两个段来解析
- 并行调用
regions
列表中每个区域的 projects.locations.searchLinks。 - 等待所有请求完成。
- 滤除成功响应,并将失败的区域名称存储在
unreachable
列表中。 - 对于每个响应(从字母顺序开始,从第一个区域开始)
- 如果没有返回链接以及非空页面令牌
- 将区域名称存储在
lastRegion
中。 - 在
nextPageToken
中保存收到的 pageToken。 - 忽略其余响应。
- 将区域名称存储在
- 否则
- 将区域名称存储在
lastRegion
中。 - 在
foundLinks
中保存收到的链接(最多linksToFetch
个)。 - 在
nextPageToken
中保存收到的 pageToken。 - 存储来自
lastRegionLinksCount
响应中的链接的链接数。 - 如果
foundLinks
小于linksToFetch
- 按下一个字母顺序使用收到的下一个响应继续运行伪代码。
- 如果
foundLinks
等于linksToFetch
- 在同一区域中向 projects.locations.searchLinks 端点发出另一个请求,但将
pageSize
参数的值设置为lastRegionLinksCount
。 - 将收到的 pageToken 存储在
nextPageToken
中。 - 继续执行第 8 步
- 在同一区域中向 projects.locations.searchLinks 端点发出另一个请求,但将
- 将区域名称存储在
- 如果没有返回链接以及非空页面令牌
- 请在 nextPageToken 前面加上
lastRegion
(即“[region].[receivedNextPageToken]”),以创建nextRegionalPageToken
来处理连续调用中的分页。