如何通过单个Microsoft Graph API请求(C# SDK)获取包含缩略图的DriveItem
如何通过单个Microsoft Graph API请求(C# SDK)获取包含缩略图的DriveItem
你遇到的问题其实是因为**thumbnails是DriveItem的导航属性**,而不是普通的顶层属性——只在select里指定它是不够的,必须用$expand参数来展开这个关联的集合,Graph API才会在同一个请求里返回缩略图数据。
你的原请求里只添加了select选项,没有展开thumbnails,所以即使指定了它,API也不会返回对应的内容。我们只需要修改查询选项,同时添加$expand参数就能解决这个问题。
修改后的代码示例如下:
var queryOptions = new List<QueryOption>() { new QueryOption("select", "name,id,webUrl,webDavUrl,parentReference,thumbnails"), new QueryOption("expand", "thumbnails") // 关键:添加这一行来展开缩略图集合 }; searchItems = await _graphServiceClient.Me.Drives[DriveID].Root .ItemWithPath(PathOrDriveItemID) .Search(SearchItem) .Request(queryOptions) .GetAsync();
这样修改后,返回的DriveItem对象里的Thumbnails属性就会包含对应的缩略图数据了,不需要再单独调用Thumbnails端点做二次请求。
补充说明:
- 导航属性(比如
thumbnails、children这类关联资源)都需要通过$expand来加载,select只是控制顶层字段的返回,无法自动加载嵌套的关联数据。 - 如果需要获取特定尺寸的缩略图,可以在
expand里进一步指定,比如expand=thumbnails($select=medium),这样只会返回中等尺寸的缩略图数据,减少响应体积。
备注:内容来源于stack exchange,提问作者Qiuzman
相关产品推荐
相关产品推荐

