Библиотеки служб пакета SDK для Microsoft Graph предоставляют класс клиента, который можно использовать в качестве отправной точки для создания всех запросов API. Существует два стиля клиентского класса: один использует интерфейс fluent для создания запроса (например, client.Users["user-id"].Manager), а другой принимает строку пути (например, api("/users/user-id/manager")). При наличии объекта запроса можно указать различные параметры, такие как фильтрация и сортировка, и, наконец, выбрать тип операции, которую вы хотите выполнить.
Пакет SDK Microsoft Graph для Go в настоящее время находится в предварительной версии. Использование этого пакета SDK в рабочей среде не поддерживается.
// GET https://graph.microsoft.com/v1.0/me
result, err := client.Me().Get(context.Background(), nil)
Важно!
Пакет SDK Microsoft Graph для Python в настоящее время находится в предварительной версии. Использование этого пакета SDK в рабочей среде не поддерживается.
# GET https://graph.microsoft.com/v1.0/me
user = asyncio.run(client.me.get())
Используйте $select для управления возвращаемыми свойствами
При получении сущности не все свойства извлекаются автоматически; иногда их необходимо выбрать явным образом. Кроме того, в некоторых сценариях нет необходимости возвращать набор свойств по умолчанию. Выбор только необходимых свойств может повысить производительность запроса. Вы можете настроить запрос, включив $select параметр запроса со списком свойств.
// GET https://graph.microsoft.com/v1.0/me?$select=displayName,jobTitle
var user = await graphClient.Me
.GetAsync(requestConfiguration =>
{
requestConfiguration.QueryParameters.Select = new string[] { "displayName", "jobTitle"};
});
// GET https://graph.microsoft.com/v1.0/me?$select=displayName,jobTitle
let user = await client.api('/me')
.select('displayName', 'jobTitle')
.get();
// GET https://graph.microsoft.com/v1.0/me?$select=displayName,jobTitle
final User user = graphClient.me()
.buildRequest()
.select("DisplayName,JobTitle")
.get();
# GET https://graph.microsoft.com/v1.0/users/{user-id}?$select=displayName,jobTitle
$userId = "71766077-aacc-470a-be5e-ba47db3b2e88"
# The -Property parameter causes a $select parameter to be included in the request
$user = Get-MgUser -UserId $userId -Property DisplayName,JobTitle
Важно!
Пакет SDK Microsoft Graph для Go в настоящее время находится в предварительной версии. Использование этого пакета SDK в рабочей среде не поддерживается.
Пакет SDK Microsoft Graph для Python в настоящее время находится в предварительной версии. Использование этого пакета SDK в рабочей среде не поддерживается.
# GET https://graph.microsoft.com/v1.0/me?$select=displayName,jobTitle
query_params = MeRequestBuilder.MeRequestBuilderGetQueryParameters(
select=['displayName', 'jobTitle']
)
request_config = MeRequestBuilder.MeRequestBuilderGetRequestConfiguration(
query_parameters=query_params,
)
user = asyncio.run(client.me
.get(request_configuration=request_config))
Получение списка сущностей
Получение списка сущностей аналогично получению одной сущности, за исключением ряда других вариантов настройки запроса. Параметр $filter запроса можно использовать для уменьшения результирующий набор только в тех строках, которые соответствуют указанному условию. Параметр $orderBy запроса запросит, чтобы сервер предоставил список сущностей, отсортированных по указанным свойствам.
Примечание.
Для некоторых запросов к ресурсам Azure Active Directory требуется использование расширенных возможностей запросов. Если вы получите ответ, указывающий на неправильный запрос, неподдерживаемый запрос или ответ, содержащий непредвиденные результаты, включая $count параметр запроса и ConsistencyLevel заголовок, может позволить запросу выполнить успешное выполнение. Дополнительные сведения и примеры см. в статье Расширенные возможности запросов для объектов каталога Azure AD.
// GET https://graph.microsoft.com/v1.0/me/messages?$select=subject,sender&$filter=<some condition>&orderBy=receivedDateTime
var messages = await graphClient.Me.Messages
.GetAsync( requestConfig =>
{
requestConfig.QueryParameters.Select = new string[] { "subject", "sender"};
requestConfig.QueryParameters.Filter = "<filter condition>";
requestConfig.QueryParameters.Orderby = new string[] { "receivedDateTime" };
});
// GET https://graph.microsoft.com/v1.0/me/messages?$select=subject,sender
// &$filter=<some condition>&orderBy=receivedDateTime
let messages = await client.api('/me/messages')
.select('subject', 'sender')
.filter('some condition')
.orderBy('receivedDateTime')
.get();
// GET https://graph.microsoft.com/v1.0/me/messages?$select=subject,sender&$filter=<some condition>&orderBy=receivedDateTime
final IMessageCollectionPage messages = graphClient.me().messages()
.buildRequest()
.select("Subject,Sender")
.filter("<filter condition>")
.orderBy("receivedDateTime")
.get();
# GET https://graph.microsoft.com/v1.0/users/{user-id}/messages?$select=subject,sender&
# $filter=<some condition>&orderBy=receivedDateTime
$userId = "71766077-aacc-470a-be5e-ba47db3b2e88"
# -Sort is equivalent to $orderby
# -Filter is equivalent to $filter
$messages = Get-MgUserMessage -UserId $userId -Property Subject,Sender `
-Sort ReceivedDateTime -Filter "some condition"
Важно!
Пакет SDK Microsoft Graph для Go в настоящее время находится в предварительной версии. Использование этого пакета SDK в рабочей среде не поддерживается.
Пакет SDK Microsoft Graph для Python в настоящее время находится в предварительной версии. Использование этого пакета SDK в рабочей среде не поддерживается.
Объект, возвращаемый при получении списка сущностей, скорее всего, будет страничной коллекцией. Дополнительные сведения о том, как получить полный список сущностей, см. в разделе Разбиение по страницам по коллекции.
Доступ к элементу коллекции
Для пакетов SDK, поддерживающих стиль fluent, доступ к коллекциям сущностей можно получить с помощью индекса массива. Для пакетов SDK на основе шаблонов достаточно внедрить идентификатор элемента в сегмент пути после коллекции. В PowerShell идентификаторы передаются в качестве параметров.
// GET https://graph.microsoft.com/v1.0/me/messages/{message-id}
string messageId = "AQMkAGUy..";
var message = await graphClient.Me.Messages[messageId]
.GetAsync();
// GET https://graph.microsoft.com/v1.0/me/messages/{message-id}
let messageId = 'AQMkAGUy..';
let messages = await client.api(`/me/messages/${messageId}`)
.get();
// GET https://graph.microsoft.com/v1.0/me/messages/{message-id}
final String messageId = "AQMkAGUy..";
final Message message = graphClient.me().messages(messageId)
.buildRequest()
.get();
Пакет SDK Microsoft Graph для Go в настоящее время находится в предварительной версии. Использование этого пакета SDK в рабочей среде не поддерживается.
Пакет SDK Microsoft Graph для Python в настоящее время находится в предварительной версии. Использование этого пакета SDK в рабочей среде не поддерживается.
# GET https://graph.microsoft.com/v1.0/me/messages/{message-id}
message = asyncio.run(client.me
.messages('messageId')
.get())
Использование $expand для доступа к связанным сущностям
Фильтр можно использовать для $expand запроса связанной сущности или коллекции сущностей одновременно с запросом основной сущности.
// GET https://graph.microsoft.com/v1.0/me/messages/{message-id}?$expand=attachments
string messageId = "AQMkAGUy...";
var message = await graphClient.Me.Messages[messageId]
.GetAsync( requestConfig => requestConfig.QueryParameters.Expand = new string[] { "attachments" });
// GET https://graph.microsoft.com/v1.0/me/messages?$expand=attachments
let messageId = 'AQMkAGUy..';
let message = await client.api(`/me/messages/${messageId}`)
.expand('attachments')
.get();
// GET https://graph.microsoft.com/v1.0/me/messages/{message-id}?$expand=attachments
final String messageId = "AQMkAGUy...";
final Message message = graphClient.me().messages(messageId)
.buildRequest()
.expand("attachments")
.get();
# GET https://graph.microsoft.com/v1.0/users/{user-id}/messages?$expand=attachments
$userId = "71766077-aacc-470a-be5e-ba47db3b2e88"
$messageId = "AQMkAGUy.."
# -ExpandProperty is equivalent to $expand
$message = Get-MgUserMessage -UserId $userId -MessageId $messageId -ExpandProperty Attachments
Важно!
Пакет SDK Microsoft Graph для Go в настоящее время находится в предварительной версии. Использование этого пакета SDK в рабочей среде не поддерживается.
Пакет SDK Microsoft Graph для Python в настоящее время находится в предварительной версии. Использование этого пакета SDK в рабочей среде не поддерживается.
Пакет SDK Microsoft Graph для Go в настоящее время находится в предварительной версии. Использование этого пакета SDK в рабочей среде не поддерживается.
Пакет SDK Microsoft Graph для Python в настоящее время находится в предварительной версии. Использование этого пакета SDK в рабочей среде не поддерживается.
Для пакетов SDK, поддерживающих стиль fluent, новые элементы можно добавлять в коллекции с помощью Add метода . Для пакетов SDK на основе шаблона объект запроса предоставляет post метод . Для PowerShell доступна команда, которая принимает параметры, New-* сопоставляемые с добавляемой сущностью. Созданная сущность обычно возвращается из вызова.
// POST https://graph.microsoft.com/v1.0/me/calendars
var calendar = new Calendar
{
Name = "Volunteer"
};
var newCalendar = await graphClient.Me.Calendars
.PostAsync(calendar);
// POST https://graph.microsoft.com/v1.0/me/calendars
final Calendar calendar = new Calendar();
calendar.Name = "Volunteer";
final Calendar newCalendar = graphClient.me().calendars()
.buildRequest()
.post(calendar);
Пакет SDK Microsoft Graph для Go в настоящее время находится в предварительной версии. Использование этого пакета SDK в рабочей среде не поддерживается.
// POST https://graph.microsoft.com/v1.0/me/calendars
import (
calendars "github.com/microsoftgraph/msgraph-sdk-go/me/calendars"
graph "github.com/microsoftgraph/msgraph-sdk-go/models/microsoft/graph"
"context"
)
calendar := graph.NewCalendar()
name := "Volunteer"
calendar.SetName(&name)
options := calendars.CalendarsRequestBuilderPostOptions{
Body: calendar,
}
result, err := client.Me().Calendars().Post(context.Background(), &options)
Важно!
Пакет SDK Microsoft Graph для Python в настоящее время находится в предварительной версии. Использование этого пакета SDK в рабочей среде не поддерживается.
Большинство обновлений в Microsoft Graph выполняются с помощью PATCH метода, поэтому необходимо только включить свойства, которые требуется изменить, в передаваемый объект.
// PATCH https://graph.microsoft.com/v1.0/teams/{team-id}
var team = new Team
{
FunSettings = new TeamFunSettings
{
AllowGiphy = true,
GiphyContentRating = GiphyRatingType.Strict
}
};
var teamId = "71766077-aacc-470a-be5e-ba47db3b2e88";
await graphClient.Teams[teamId]
.PatchAsync(team);
// PATCH https://graph.microsoft.com/v1.0/teams/{team-id}
final Team team = new Team();
team.FunSettings = new TeamFunSettings();
team.FunSettings.AllowGiphy = true;
team.FunSettings.GiphyContentRating = GiphyRatingType.STRICT;
final String teamId = "71766077-aacc-470a-be5e-ba47db3b2e88";
graphClient.teams(teamId)
.buildRequest()
.patch(team);
Пакет SDK Microsoft Graph для Go в настоящее время находится в предварительной версии. Использование этого пакета SDK в рабочей среде не поддерживается.
Пакет SDK Microsoft Graph для Python в настоящее время находится в предварительной версии. Использование этого пакета SDK в рабочей среде не поддерживается.
Использование заголовков HTTP для управления поведением запросов
Функцию Header() можно использовать для присоединения пользовательских заголовков к запросу. В PowerShell добавление заголовков возможно только с помощью Invoke-GraphRequest метода . В ряде сценариев Microsoft Graph для настройки поведения запроса используются пользовательские заголовки.
// GET https://graph.microsoft.com/v1.0/users/{user-id}/events
var events = await graphClient.Me.Events
.GetAsync( requestConfig =>
{
requestConfig.Headers.Add("Prefer", @"outlook.timezone=""Pacific Standard Time""");
requestConfig.QueryParameters.Select = new string[] {"subject", "body", "bodyPreview"};
});
// GET https://graph.microsoft.com/v1.0/me/events
let events = await client.api('/me/events')
.header('Prefer','outlook.timezone="Pacific Standard Time"')
.select('subject,body,bodyPreview,organizer,attendees,start,end,location')
.get();
// GET https://graph.microsoft.com/v1.0/users/{user-id}/events
final Event events = graphClient.me().events()
.buildRequest(new HeaderOption("Prefer","outlook.timezone=\"Pacific Standard Time\""))
.select("Subject,Body,BodyPreview")
.get();
# GET https://graph.microsoft.com/v1.0/users/{user-id}/events
$userId = "71766077-aacc-470a-be5e-ba47db3b2e88"
$requestUri = "/v1.0/users/" + $userId + "/events"
$events = Invoke-GraphRequest -Method GET -Uri $requestUri `
-Headers @{ Prefer = "outlook.timezone=""Pacific Standard Time""" }
Важно!
Пакет SDK Microsoft Graph для Go в настоящее время находится в предварительной версии. Использование этого пакета SDK в рабочей среде не поддерживается.
Пакет SDK Microsoft Graph для Python в настоящее время находится в предварительной версии. Использование этого пакета SDK в рабочей среде не поддерживается.
# GET https://graph.microsoft.com/v1.0/users/{user-id}/events
request_config = MessagesRequestBuilder.MessagesRequestBuilderGetRequestConfiguration(
headers={'Prefer': 'outlook.timezone="Pacific Standard Time"'},
)
events = asyncio.run(client.me
.events
.get(request_configuration=request_config))
Предоставление настраиваемых параметров запроса
Для пакетов SDK, поддерживающих стиль fluent, можно указать пользовательские значения параметров запроса с помощью списка QueryOptions объектов. Для пакетов SDK на основе шаблонов параметры кодируются в формате URL-адреса и добавляются в URI запроса. Для PowerShell и Go определенные параметры запроса для заданного API предоставляются в качестве параметров для соответствующей команды.
Пакет SDK Microsoft Graph для Go в настоящее время находится в предварительной версии. Использование этого пакета SDK в рабочей среде не поддерживается.
Пакет SDK Microsoft Graph для Python в настоящее время находится в предварительной версии. Использование этого пакета SDK в рабочей среде не поддерживается.