Erweiterte Nutzung von Microsoft Graph

Azure-Sicherheit für Entwickler implementieren

Anushika Agarwal

Cloud Data Engineer

Analogie: Einkaufswege

  • Trag die Einkäufe in kleineren Gängen

  • Leichter, schneller, sicherer

Einkaufswege

Azure-Sicherheit für Entwickler implementieren

Paginierung

  • Teilt große Ergebnisse in kleinere Seiten
  • Schnellere Antworten, weniger Timeouts
  • Wie holt man Folgeseiten?

Paginierung

Azure-Sicherheit für Entwickler implementieren

Beispiel: PeopleSphere mit Paginierung

  • Tausende Mitarbeitendendatensätze in handlichen Seiten geladen

Beispiel – PeopleSphere Paginierung

Azure-Sicherheit für Entwickler implementieren

Serverseitige Paginierung

  • Dienst wählt eine Standardseitengröße
  • Client gibt keine Größe an
  • Beispiel
    • GET /v1.0/users : (Standard) liefert 100 Elemente pro Seite

Serverseitige Paginierung

Azure-Sicherheit für Entwickler implementieren

Clientseitige Paginierung

  • Client gibt die Elemente pro Seite an

Clientseitige Paginierung

Azure-Sicherheit für Entwickler implementieren

Abfrageparameter für Paginierung

  • Abfrageparameter

    • $top: Anzahl Elemente pro Seite.

    Abfrageparameter – Top

  • $skip: Offset; beginne nach den ersten N Elementen

    Abfrageparameter – Skip

Azure-Sicherheit für Entwickler implementieren

Beispiel: clientseitige Paginierung

  • Beispiel:
    • https://graph.microsoft.com/v1.0/groups?$top=2

Clientseitige Paginierung

Azure-Sicherheit für Entwickler implementieren

Batching-Analogie: Online-Warenkorb

  • Mehrere Artikel in einem Warenkorb
  • Ein Checkout, ein Beleg

Analogie – Online-Warenkorb

Azure-Sicherheit für Entwickler implementieren

Batching

  • Mehrere Graph-Anfragen in einem HTTP-Aufruf bündeln
  • Eine Nutzlast -> eine Antwort mit allen Ergebnissen

  • Vorteile

    • Weniger Wege, geringere Latenz
    • Ideal für Dashboards.
  • Limit

    • Bis zu 20 Anfragen pro Batch

Batching

Azure-Sicherheit für Entwickler implementieren

Batch-Request-Endpunkt

  • Endpunkt

    • Methode: POST
    • Endpunkt:https://graph.microsoft.com/v1.0/$batch
  • $batch statt einer konkreten Ressource wie users

Batch-Request-Endpunkt

Azure-Sicherheit für Entwickler implementieren

Batch-Request-Body

  • Body ist ein JSON-Objekt
  • Enthält eine Eigenschaft: requests
  • requests ist ein Array (bis zu 20 Einträge)
{ "requests": 
   [ {
      "id": "1",
      "method": "GET",
      "url": "/me/memberOf"
    },
    {
      "id": "2",
      "method": "GET",
      "url": "/me/planner/tasks"
    } ]
}
Azure-Sicherheit für Entwickler implementieren

Request-Elemente und Header

  • Jedes Request-Element benötigt

    • id: eindeutiges Label zum Zuordnen der Antwort
    • method: (GET/POST/PATCH/DELETE)
    • url: relativer Pfad
  • Header: Content-Type: application/json

{ "requests": 
   [ {
      "id": "1",
      "method": "GET",
      "url": "/me/memberOf"
    },
    {
      "id": "2",
      "method": "GET",
      "url": "/me/planner/tasks"
    } ]
}
Azure-Sicherheit für Entwickler implementieren

Batch-Antwort

  • Jeder Eintrag steht für eine Anfrage
{
  "responses": [
    {  "id": "1", 
        "status": 200, 
        "body": { "value": [/* ... */]}},
    { 
        "id": "2", 
        "status": 403, 
        "body": { "error": [/* ... */]}}
  ]
}

Azure-Sicherheit für Entwickler implementieren

Was jede Antwort enthält

  • Jedes Response-Element enthält

    • id: passt zur ursprünglichen Anfrage

    • status: HTTP-Status für dieses Element

      • 200: OK
      • 403: Verboten
    • headers: (z. B. Content-Type)

    • body: Daten- oder Fehlerobjekt

{
  "responses": [
    {  "id": "1", 
        "status": 200, 
        "body": { "value": [/* ... */]}},
    { 
        "id": "2", 
        "status": 403, 
        "body": { "error": [/* ... */]}}
  ]
}

Azure-Sicherheit für Entwickler implementieren

Lass uns üben!

Azure-Sicherheit für Entwickler implementieren

Preparing Video For Download...