Создание клиентских библиотек 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
пути:
kiota generate --openapi https://aka.ms/graph/v1.0/openapi.yaml --include-path /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. Для клиента, созданного с помощью следующей команды:
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();