如何通过Rest API获取关联至Hub Site的所有站点
获取指定Hub站点下所有关联站点的正确REST API实现方案
问题根因
你当前使用的website/sites/TestingHub/_api/web/HubSiteData接口仅支持返回当前站点关联的Hub元数据,不支持拉取该Hub下挂载的所有关联站点列表,因此无法得到预期结果。
正确调用方式
根据你使用的SharePoint环境选择对应方案:
1. SharePoint Online 环境
需调用租户级Hub工具接口,调用账号需要拥有Hub站点管理权限或SharePoint全局管理员权限:
步骤1:获取TestingHub的Hub站点ID
先调用如下接口获取目标Hub的唯一ID:
GET https://<租户域名>/sites/TestingHub/_api/web/hubsiteid
请求头需携带:
- Accept:
application/json;odata=nometadata
返回结果中的Guid值即为Hub站点ID。
步骤2:查询关联站点列表
用步骤1拿到的ID调用关联站点查询接口:
GET https://<租户域名>/_api/SP.HubSiteUtility.GetAssociatedSites(@hubSiteId)?@hubSiteId='<上一步获取的Hub ID>'
请求头和上一步一致,返回结果中会直接包含所有关联到该Hub的站点的标题、URL、站点ID等完整信息。
2. SharePoint Server 2019及以上本地部署环境
直接在Hub站点下调用带扩展参数的接口即可:
GET https://<你的站点域名>/sites/TestingHub/_api/site/HubSiteData?$expand=AssociatedSites
你之前调用失败是因为没有添加$expand=AssociatedSites参数,添加后接口会自动返回所有关联站点列表。
注意事项
- 接口调用权限不足会返回403错误,需确保调用账号至少拥有TestingHub站点的读取权限
- SharePoint存在最长15分钟的缓存周期,新关联的站点可能需要等待一段时间后才能被接口查询到
内容的提问来源于stack exchange,提问作者Pavan kalyan Sake
相关产品推荐
相关产品推荐

