培训
学习路径
了解 ASP.NET Core 开发的 Microsoft Graph 方案 - Training
该学习路径包含实践练习,展示了如何在使用 Microsoft Graph API 的 ASP.NET Core 应用中执行常见任务,例如显示用户的电子邮件、访问日历事件,以及下载和上传文件。
Microsoft发布随时可用的 SDK,用于使用许多常用编程语言访问Microsoft Graph API。 这些 SDK 是访问 Microsoft Graph 的便捷方式,只需使用适当的包管理器安装 SDK,然后开始编码。 但是,由于Microsoft图形 REST API 的大小和范围,这些库相当大。 对于整体安装大小是一个问题的应用程序,这种大大小引起了人们的关注,尤其是当应用程序仅使用Microsoft Graph 的子集时。 在这种情况下,使用 Kiota 生成自定义 API 客户端,该客户端仅面向应用程序使用的 Microsoft Graph 部分,可以减少应用的整体安装大小。
与使用 Microsoft 发布的 SDK 相比较,使用 Kiota 生成的客户端有一些优点和缺点。
若要使用 Kiota 生成 Microsoft Graph 客户端,必须提供 Microsoft Graph 的 OpenAPI 说明。 可在此处找到 Microsoft Graph 的 OpenAPI 说明:
https://aka.ms/graph/v1.0/openapi.yaml
https://aka.ms/graph/beta/openapi.yaml
为了减小生成的客户端的整体大小,需要标识应用使用的 Microsoft Graph API,并使用 --include-path
Kiota generate 命令的 或 --exclude-path
参数来仅生成这些 API 的模型和请求生成器。
例如,假设有一个应用程序使用 “To Do API ”来管理用户的“To Do”任务和任务列表。 所有必需的 API(如 列出任务列表 和 创建任务)都通过请求 URL 下的 /me/todo
URL 进行访问。
GET /me/todo/lists
POST /me/todo/lists/{listId}/tasks
在这种情况下,可以使用 --include-path
参数仅生成模型,并在路径下 /me/todo
请求 API 的生成器:
kiota generate --openapi https://aka.ms/graph/v1.0/openapi.yaml --include-path /me/todo/** ...
让我们探讨一个示例,为 C# 生成客户端来调用待办 API。 使用 Microsoft Graph .NET 客户端库,应用可以使用以下代码获取已登录用户的任务列表。
using Azure.Identity;
using Microsoft.Graph;
var credential = new DeviceCodeCredential();
var graphClient = new GraphServiceClient(credential);
var taskLists = await graphClient.Me.Todo.Lists.GetAsync();
或者,应用可以使用 Kiota 生成的库来调用同一 API。 对于使用以下命令生成的客户端:
kiota generate --openapi https://aka.ms/graph/v1.0/openapi.yaml --include-path /me/todo/** --language CSharp --class-name TaskClient --namespace-name MyTaskApp.Client --output ./src/MyTaskApp/Client
等效代码如下所示:
using Azure.Identity;
using Microsoft.Kiota.Authentication.Azure;
using Microsoft.Kiota.Http.HttpClientLibrary;
using MyTaskApp.Client;
// The auth provider will only authorize requests to
// the allowed hosts, in this case Microsoft Graph
var allowedHosts = new [] { "graph.microsoft.com" };
var graphScopes = new [] { "User.Read" };
var credential = new DeviceCodeCredential();
var authProvider = new AzureIdentityAuthenticationProvider(credential, allowedHosts, scopes: graphScopes);
var adapter = new HttpClientRequestAdapter(authProvider);
var taskClient = new TaskClient(adapter);
var taskLists = await tasksClient.Me.Todo.Lists.GetAsync();
获取用户的任务列表可能会返回 分页响应。 Microsoft Graph 核心库提供了一个 页面迭代器 类,开发人员可以使用它来分页浏览任务列表的集合。
例如,在 C# 中,将依赖项添加到 Microsoft.Graph.Core (dotnet add package Microsoft.Graph.Core
) ,然后使用 PageIterator
类分页浏览集合。
using MyTaskApp.Client;
using MyTaskApp.Client.Models;
using Microsoft.Graph;
// Using adapter and taskLists from previous example
var pageIterator = PageIterator<TodoTaskList, TodoTaskListCollectionResponse>
.CreatePageIterator(
adapter,
taskLists,
(taskList) =>
{
Console.WriteLine(taskList.DisplayName);
return true;
});
await pageIterator.IterateAsync();
培训
学习路径
了解 ASP.NET Core 开发的 Microsoft Graph 方案 - Training
该学习路径包含实践练习,展示了如何在使用 Microsoft Graph API 的 ASP.NET Core 应用中执行常见任务,例如显示用户的电子邮件、访问日历事件,以及下载和上传文件。