Query's uitvoeren op Microsoft Graph met behulp van SDK's

Voltooid

De Microsoft Graph SDK's zijn ontworpen om het bouwen van hoogwaardige, efficiënte en tolerante toepassingen die toegang hebben tot Microsoft Graph te vereenvoudigen. De SDK's bevatten twee onderdelen: een servicebibliotheek en een kernbibliotheek.

De servicebibliotheek bevat modellen en aanvraagbouwers die worden gegenereerd op basis van Microsoft Graph-metagegevens om een rijke en detecteerbare ervaring te bieden.

De kernbibliotheek biedt een set functies die het werken met alle Microsoft Graph-services verbeteren. Ingesloten ondersteuning voor het verwerken van nieuwe pogingen, veilige omleidingen, transparante verificatie en payloadcompressie, verbeteren de kwaliteit van de interacties van uw toepassing met Microsoft Graph, zonder extra complexiteit, terwijl u volledig in controle blijft. De kernbibliotheek biedt ook ondersteuning voor algemene taken, zoals paging via verzamelingen en het maken van batchaanvragen.

In deze les leert u meer over de beschikbare SDK's en ziet u enkele codevoorbeelden van enkele van de meest voorkomende bewerkingen.

De Microsoft Graph .NET SDK installeren

De Microsoft Graph .NET SDK is opgenomen in de volgende NuGet-pakketten:

  • Microsoft.Graph : bevat de modellen en aanvraagbouwers voor toegang tot het v1.0 eindpunt met de fluent-API. Microsoft.Graph heeft een afhankelijkheid van Microsoft.Graph.Core.
  • Microsoft.Graph.Beta : bevat de modellen en aanvraagbouwers voor toegang tot het beta eindpunt met de fluent-API. Microsoft.Graph.Beta heeft een afhankelijkheid van Microsoft.Graph.Core.
  • Microsoft.Graph.Core : de kernbibliotheek voor het maken van aanroepen naar Microsoft Graph.

Een Microsoft Graph-client maken

De Microsoft Graph-client is ontworpen om het eenvoudig te maken om microsoft Graph aan te roepen. U kunt één clientexemplaren gebruiken voor de levensduur van de toepassing. In de volgende codevoorbeelden ziet u hoe u een exemplaar van een Microsoft Graph-client maakt. De verificatieprovider verwerkt het verkrijgen van toegangstokens voor de toepassing. De verschillende toepassingsproviders ondersteunen verschillende clientscenario's. Zie Een verificatieprovider kiezen voor meer informatie over welke provider en opties geschikt zijn voor uw scenario.

var scopes = new[] { "User.Read" };

// Multi-tenant apps can use "common",
// single-tenant apps must use the tenant ID from the Azure portal
var tenantId = "common";

// Value from app registration
var clientId = "YOUR_CLIENT_ID";

// using Azure.Identity;
var options = new TokenCredentialOptions
{
    AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
};

// Callback function that receives the user prompt
// Prompt contains the generated device code that you must
// enter during the auth process in the browser
Func<DeviceCodeInfo, CancellationToken, Task> callback = (code, cancellation) => {
    Console.WriteLine(code.Message);
    return Task.FromResult(0);
};

// /dotnet/api/azure.identity.devicecodecredential
var deviceCodeCredential = new DeviceCodeCredential(
    callback, tenantId, clientId, options);

var graphClient = new GraphServiceClient(deviceCodeCredential, scopes);

Informatie van Microsoft Graph lezen

Als u informatie uit Microsoft Graph wilt lezen, moet u eerst een aanvraagobject maken en vervolgens de GET methode uitvoeren op de aanvraag.

// GET https://graph.microsoft.com/v1.0/me

var user = await graphClient.Me
    .GetAsync();

Een lijst met entiteiten ophalen

Het ophalen van een lijst met entiteiten is vergelijkbaar met het ophalen van één entiteit, behalve dat er andere opties zijn voor het configureren van de aanvraag. De $filter queryparameter kan worden gebruikt om de resultatenset te beperken tot alleen de rijen die overeenkomen met de opgegeven voorwaarde. De $orderBy queryparameter vraagt aan dat de server de lijst met entiteiten levert die zijn gesorteerd op de opgegeven eigenschappen.

// GET https://graph.microsoft.com/v1.0/me/messages?$select=subject,sender&$filter=<some condition>&orderBy=receivedDateTime

var messages = await graphClient.Me.Messages
    .Request()
    .Select(m => new {
        m.Subject,
        m.Sender
    })
    .Filter("<filter condition>")
    .OrderBy("receivedDateTime")
    .GetAsync();

Een entiteit verwijderen

Verwijderaanvragen worden op dezelfde manier samengesteld als aanvragen om een entiteit op te halen, maar gebruik een DELETE aanvraag in plaats van een GET.

// DELETE https://graph.microsoft.com/v1.0/me/messages/{message-id}

string messageId = "AQMkAGUy...";
var message = await graphClient.Me.Messages[messageId]
    .Request()
    .DeleteAsync();

Een nieuwe entiteit maken

Voor SDK's die een vloeiende stijl ondersteunen, kunnen nieuwe items worden toegevoegd aan verzamelingen met een Add methode. Voor sdk's op basis van een sjabloon maakt het aanvraagobject een post methode beschikbaar.

// POST https://graph.microsoft.com/v1.0/me/calendars

var calendar = new Calendar
{
    Name = "Volunteer"
};

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

Meer informatie