我可以使用Microsoft Graph API检索用户的个人资料及其Web应用程序中的日历。有时,我必须一次提出要求;例如网络速度太慢或某种原因。但是,此API GET /me
的响应中没有日历的属性。我该如何处理?
我通过Graph Client使用以下代码:
// get the user's profile
var me = await _serviceClient.Me.Request().GetAsync();
// list the user's calendars
var result = _serviceClient.Me.Calendars.Request().GetAsync();
有人可以帮助我吗?非常感谢。
答案 0 :(得分:1)
Microsoft Graph的核心是API聚合器。换句话说,它充当多个产品API(Azure Active Directory,Exchange Online,SharePoint,OneDrive,OneNote等)的代理。通常,您无法跨API边界检索数据。
在这种情况下,#
从Azure Active Directory提取数据,而/me
从Exchange Online提取数据。因此,您无法从单个调用中检索两个结果集。
您可以使用JSON Batching来近似单个通话,但我不确定这会带来很大的不同。两个调用相对于一个调用的开销非常小,无论如何结果的大小应该几乎相同。 JSON批处理允许您进行一次调用,但它需要稍大的请求有效负载(要执行的JSON),并且结果大小也应与两次调用相同)。我希望任何性能差异最多都可以忽略不计。
答案 1 :(得分:1)
要添加到Marc的注释中,您不应假定批处理是最快的解决方案,因为HTTP请求可以并行发出。确实需要花一些时间处理Tasks,但是没有理由需要顺序执行多个调用。
这是来自Fiddler的时间线,它执行批处理调用,与其他两个调用执行相同的操作。
答案 2 :(得分:0)
根据您的描述,我假设您要获取用户的个人资料并在一个请求中列出其个人资料。
请参阅this document,我们可以使用以下API来实现。
string filePath = Path.Combine(Environment.SystemDirectory, "defrag.exe");
我们可以将两个请求放在正文中,如下所示:
`https://graph.microsoft.com/v1.0/$batch`