如何通过Microsoft Graph API合并请求同时获取指定邮件及附件
解决方案
完全可以将两次请求合并为单次请求,借助Microsoft Graph API的$expand查询参数即可实现,在拉取匹配主题的最新邮件的同时直接展开关联的附件资源,无需分两次调用接口。
合并后的基础请求
https://graph.microsoft.com/v1.0/me/messages?$select=id,hasAttachments&$top=1&$filter=subject eq '{subject}'&$expand=attachments
调用该请求后,返回的匹配邮件记录中会直接携带attachments数组字段,包含该邮件下所有附件的元数据与内容,不用再单独传入邮件ID调取附件接口。
优化版本(仅返回CSV格式附件)
如果不需要其他格式的附件,还可以给$expand增加过滤规则,直接在接口层面过滤出CSV附件,减少无用数据传输:
https://graph.microsoft.com/v1.0/me/messages?$select=id,hasAttachments&$top=1&$filter=subject eq '{subject}'&$expand=attachments($filter=endswith(name,'.csv'))
注意事项
- 若附件体积超过3MB,Graph API不会在展开的
attachments字段中返回完整的附件内容,仅返回附件基础元数据,这种场景下仍需要单独调用附件接口拉取完整内容 - 请求中的
{subject}参数需要做URL编码处理,避免主题包含特殊字符时出现请求报错
内容的提问来源于stack exchange,提问作者C.E James
相关产品推荐
相关产品推荐

