Создание клиентских библиотек Microsoft Graph с помощью Kiota
Статья
Корпорация Майкрософт публикует готовые к использованию пакеты SDK для доступа к API Microsoft Graph на многих популярных языках программирования. Эти пакеты SDK являются удобным способом доступа к Microsoft Graph. Просто установите пакет SDK с помощью соответствующего диспетчера пакетов и начните кодирование. Однако из-за размера и области REST API Microsoft Graph эти библиотеки довольно велики. Для приложений, где общий размер установки является проблемой, этот большой размер вызывает беспокойство, особенно если приложение использует только подмножество Microsoft Graph. В этом случае создание пользовательского клиента API с помощью Kiota, предназначенного только для частей Microsoft Graph, используемых приложением, может уменьшить общий размер установки приложения.
Рекомендации по использованию созданных клиентов и пакетов SDK Майкрософт
Использование клиента, созданного Kiota, имеет ряд преимуществ и недостатков по сравнению с использованием пакетов SDK, опубликованных Корпорацией Майкрософт.
Преимущества
Клиенты, созданные Kiota, используют те же соглашения и шаблоны, что и опубликованный корпорацией Майкрософт пакет SDK. Если вы уже знакомы с использованием пакета Microsoft SDK, использование созданной библиотеки обеспечивает аналогичный интерфейс.
Созданные клиенты совместимы с частью основной библиотеки Microsoft Graph в пакете SDK, опубликованном Корпорацией Майкрософт, поэтому вы можете добавить зависимость в основную библиотеку, если вам нужно использовать такие функции, как итератор страницы, пакетные запросы или отправка больших файлов.
Недостатки
Конечным результатом создания клиента с помощью Kiota являются исходные файлы, которые необходимо добавить в проект. Это увеличивает общий размер базы кода. Однако это, вероятно, минимальный размер по сравнению с общим размером полного пакета SDK Microsoft Graph.
Если в будущем приложению потребуется вызывать другие API Microsoft Graph, необходимо повторно создать клиент для добавления необходимых моделей и построителей запросов.
Создание клиента
Чтобы создать клиент Microsoft Graph с Kiota, необходимо предоставить описание OpenAPI для Microsoft Graph. Описания OpenAPI для Microsoft Graph можно найти здесь:
API версии 1.0: https://aka.ms/graph/v1.0/openapi.yaml
API бета-версии: https://aka.ms/graph/beta/openapi.yaml
Чтобы уменьшить общий размер созданного клиента, необходимо определить API Microsoft Graph, используемые приложением, и использовать --include-path параметры или --exclude-path для команды Kiota generate , чтобы создать только модели и построитель запросов для этих API.
Например, рассмотрим приложение, которое использует API To Do для управления задачами и списками задач пользователя To Do. Доступ ко всем необходимым API- интерфейсам, таким как списки задач списка и создание задачи, осуществляется через URL-адреса в URL-адресе /me/todo запроса.
Список задач: GET /me/todo/lists
Создать задачу: POST /me/todo/lists/{listId}/tasks
В этом случае параметр можно использовать --include-path только для создания моделей и запроса построителей API по /me/todo пути:
Рассмотрим пример создания клиента для C# для вызова API To Do. С помощью клиентской библиотеки 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. Для клиента, созданного с помощью следующей команды:
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 с помощью API Microsoft Graph.