Freigeben über


Durchführen von API-Aufrufen mithilfe der Microsoft Graph SDKs

Die Microsoft Graph SDK-Dienstbibliotheken stellen eine Clientklasse bereit, die als Ausgangspunkt für die Erstellung aller API-Anforderungen verwendet werden kann. Es gibt zwei Arten von Clientklassen: Eine verwendet eine Fluent-Schnittstelle zum Erstellen der Anforderung (z. B client.Users["user-id"].Manager. ) und die andere akzeptiert eine Pfadzeichenfolge (z. B api("/users/user-id/manager"). ). Wenn Sie über ein Anforderungsobjekt verfügen, können Sie verschiedene Optionen angeben, z. B. Filtern und Sortieren, und schließlich den Typ des Vorgangs auswählen, den Sie ausführen möchten.

Es gibt auch das Microsoft Graph PowerShell SDK, das über keine Clientklasse verfügt. Stattdessen werden alle Anforderungen als PowerShell-Befehle dargestellt. Um beispielsweise den Vorgesetzten eines Benutzers abzurufen, lautet Get-MgUserManagerder Befehl . Weitere Informationen zum Suchen von Befehlen für API-Aufrufe finden Sie unter Navigieren im Microsoft Graph PowerShell SDK.

Lesen von Informationen aus Microsoft Graph

Zum Lesen von Informationen aus Microsoft Graph müssen Sie zunächst ein Anforderungsobjekt erstellen und dann die GET -Methode für die Anforderung ausführen.

// GET https://graph.microsoft.com/v1.0/me
var user = await graphClient.Me
    .GetAsync();

Verwenden von $select zum Steuern der zurückgegebenen Eigenschaften

Beim Abrufen einer Entität werden nicht alle Eigenschaften automatisch abgerufen. manchmal müssen sie explizit ausgewählt werden. Außerdem ist die Rückgabe des Standardsatzes von Eigenschaften in einigen Szenarien nicht erforderlich. Wenn Sie nur die erforderlichen Eigenschaften auswählen, kann die Leistung der Anforderung verbessert werden. Sie können die Anforderung so anpassen, dass sie den $select Abfrageparameter in eine Liste von Eigenschaften einschließt.

// GET https://graph.microsoft.com/v1.0/me?$select=displayName,jobTitle
var user = await graphClient.Me
    .GetAsync(requestConfiguration =>
    {
        requestConfiguration.QueryParameters.Select =
            ["displayName", "jobTitle"];
    });

Abrufen einer Liste von Entitäten

Das Abrufen einer Liste von Entitäten ähnelt dem Abrufen einer einzelnen Entität, mit dem Unterschied, dass andere Optionen zum Konfigurieren der Anforderung vorhanden sind. Der $filter Abfrageparameter kann das Resultset auf die Zeilen reduzieren, die der angegebenen Bedingung entsprechen. Der $orderby Abfrageparameter fordert an, dass der Server die Liste der Entitäten bereitstellt, die nach den angegebenen Eigenschaften sortiert sind.

Hinweis

Einige Anforderungen für Microsoft Entra Ressourcen erfordern die Verwendung erweiterter Abfragefunktionen. Wenn Sie eine Antwort erhalten, die auf eine ungültige Anforderung, eine nicht unterstützte Abfrage oder eine Antwort mit unerwarteten Ergebnissen hinweist, kann es möglich sein, dass die Anforderung erfolgreich ist, einschließlich des $count Abfrageparameters und ConsistencyLevel des Headers. Ausführliche Informationen und Beispiele finden Sie unter Erweiterte Abfragefunktionen für Verzeichnisobjekte.

// GET https://graph.microsoft.com/v1.0/me/messages?
// $select=subject,sender&$filter=subject eq 'Hello world'
var messages = await graphClient.Me.Messages
    .GetAsync(requestConfig =>
    {
        requestConfig.QueryParameters.Select =
            ["subject", "sender"];
        requestConfig.QueryParameters.Filter =
            "subject eq 'Hello world'";
    });

Das beim Abrufen einer Liste von Entitäten zurückgegebene Objekt ist wahrscheinlich eine ausgelagerte Auflistung. Ausführliche Informationen zum Abrufen der vollständigen Liste der Entitäten finden Sie unter Paging durch eine Sammlung.

Zugreifen auf ein Element einer Sammlung

Für SDKs, die einen Fluent-Stil unterstützen, kann mithilfe eines Arrayindexes auf Sammlungen von Entitäten zugegriffen werden. Bei vorlagenbasierten SDKs ist es ausreichend, den Elementbezeichner in das Pfadsegment einzubetten, das der Sammlung folgt. Für PowerShell werden Bezeichner als Parameter übergeben.

// GET https://graph.microsoft.com/v1.0/me/messages/{message-id}
// messageId is a string containing the id property of the message
var message = await graphClient.Me.Messages[messageId]
    .GetAsync();

Sie können den $expand Filter verwenden, um eine verknüpfte Entität oder Sammlung von Entitäten anzufordern, während Sie die Standard Entität anfordern.

// GET https://graph.microsoft.com/v1.0/me/messages/{message-id}?$expand=attachments
// messageId is a string containing the id property of the message
var message = await graphClient.Me.Messages[messageId]
    .GetAsync(requestConfig =>
        requestConfig.QueryParameters.Expand =
            ["attachments"]);

Löschen einer Entität

Löschanforderungen werden auf die gleiche Weise wie Anforderungen zum Abrufen einer Entität erstellt, verwenden aber eine DELETE Anforderung anstelle von GET.

// DELETE https://graph.microsoft.com/v1.0/me/messages/{message-id}
// messageId is a string containing the id property of the message
await graphClient.Me.Messages[messageId]
    .DeleteAsync();

Erstellen einer neuen Entität mit POST

Für Fluent-Stil- und vorlagenbasierte SDKs können sammlungen mit einer POST -Methode neue Elemente hinzugefügt werden. Für PowerShell akzeptiert ein New-* Befehl Parameter, die der hinzuzufügenden Entität zugeordnet sind. Die erstellte Entität wird vom Aufruf zurückgegeben.

// POST https://graph.microsoft.com/v1.0/me/calendars
var calendar = new Calendar
{
    Name = "Volunteer",
};

var newCalendar = await graphClient.Me.Calendars
    .PostAsync(calendar);

Aktualisieren einer vorhandenen Entität mit PATCH

Die meisten Updates in Microsoft Graph werden mithilfe einer PATCH -Methode ausgeführt. Daher ist es nur erforderlich, die Eigenschaften, die Sie ändern möchten, in das übergebene Objekt einzuschließen.

// PATCH https://graph.microsoft.com/v1.0/teams/{team-id}
var team = new Team
{
    FunSettings = new TeamFunSettings
    {
        AllowGiphy = true,
        GiphyContentRating = GiphyRatingType.Strict,
    },
};

// teamId is a string containing the id property of the team
await graphClient.Teams[teamId]
    .PatchAsync(team);

Verwenden von HTTP-Headern zum Steuern des Anforderungsverhaltens

Sie können benutzerdefinierte Header mithilfe der Headers Sammlung an eine Anforderung anfügen. Für PowerShell ist das Hinzufügen von Headern nur mit der Invoke-GraphRequest -Methode möglich. In einigen Microsoft Graph-Szenarien werden benutzerdefinierte Header verwendet, um das Verhalten der Anforderung anzupassen.

// GET https://graph.microsoft.com/v1.0/me/events
var events = await graphClient.Me.Events
    .GetAsync(requestConfig =>
    {
        requestConfig.Headers.Add(
            "Prefer", @"outlook.timezone=""Pacific Standard Time""");
    });

Bereitstellen benutzerdefinierter Abfrageparameter

Für SDKs, die den Fluent-Stil unterstützen, können Sie mithilfe des QueryParameters -Objekts benutzerdefinierte Abfrageparameterwerte bereitstellen. Bei vorlagenbasierten SDKs werden die Parameter URL-codiert und dem Anforderungs-URI hinzugefügt. Für PowerShell und Go werden definierte Abfrageparameter für eine bestimmte API als Parameter für den entsprechenden Befehl verfügbar gemacht.

// GET https://graph.microsoft.com/v1.0/me/calendarView?
// startDateTime=2023-06-14T00:00:00Z&endDateTime=2023-06-15T00:00:00Z
var events = await graphClient.Me.CalendarView
    .GetAsync(requestConfiguration =>
    {
        requestConfiguration.QueryParameters.StartDateTime =
            "2023-06-14T00:00:00Z";
        requestConfiguration.QueryParameters.EndDateTime =
            "2023-06-15T00:00:00Z";
    });