Avancerad användning av Microsoft Graph

Implementera Azure-säkerhet för utvecklare

Anushika Agarwal

Cloud Data Engineer

Analogi: matvaruärenden

  • Bär matvaror i fler men lättare omgångar

  • Lättare, snabbare och säkrare

Grocery trips

Implementera Azure-säkerhet för utvecklare

Paginering

  • Delar upp stora resultat i mindre sidor
  • Snabbare svar och färre timeout-fel
  • Hur hämtas nästa sida?

Pagination

Implementera Azure-säkerhet för utvecklare

Exempel: PeopleSphere med paginering

  • Tusentals anställdas poster hämtas i hanterbara sidor

Example - PeopleSphere Pagination

Implementera Azure-säkerhet för utvecklare

Serverpaginering

  • Tjänsten väljer en standardsidstorlek
  • Klienten anger ingen storlek
  • Exempel
    • GET /v1.0/users : (standard) Returnerar 100 poster per sida

Server-Side Pagination

Implementera Azure-säkerhet för utvecklare

Klientpaginering

  • Klienten anger antal poster per sida

Client-Side Pagination

Implementera Azure-säkerhet för utvecklare

Frågeparametrar för paginering

  • Frågeparametrar

    • $top: antal poster per sida.

    Query Parameters - Top

  • $skip: förskjutning; hoppa över de första N posterna

    Query Parameters - Skip

Implementera Azure-säkerhet för utvecklare

Exempel på klientpaginering

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

Client-Side Pagination

Implementera Azure-säkerhet för utvecklare

Batchanalogi: kundvagnen vid näthandel

  • Flera varor i en korg
  • En betalning, ett kvitto

Analogy - Online shopping cart

Implementera Azure-säkerhet för utvecklare

Batching

  • Kombinera flera Graph-förfrågningar i ett HTTP-anrop
  • En nyttolast -> ett svar med alla resultat

  • Fördelar

    • Färre anrop, lägre latens
    • Idealiskt för dashboards.
  • Begränsning

    • Upp till 20 förfrågningar per batch

Batching

Implementera Azure-säkerhet för utvecklare

Slutpunkt för batchförfrågan

  • Slutpunkt

    • Metod: POST
    • Slutpunkt:https://graph.microsoft.com/v1.0/$batch
  • $batch i stället för en specifik resurs som users

Batch request endpoint

Implementera Azure-säkerhet för utvecklare

Innehåll i batchförfrågan

  • Innehållet är ett JSON-objekt
  • Innehåller en egenskap: requests
  • requests är en array (upp till 20 poster)
{ "requests": 
   [ {
      "id": "1",
      "method": "GET",
      "url": "/me/memberOf"
    },
    {
      "id": "2",
      "method": "GET",
      "url": "/me/planner/tasks"
    } ]
}
Implementera Azure-säkerhet för utvecklare

Förfrågningsobjekt och headers

  • Varje förfrågningsobjekt behöver

    • id: unik etikett för att matcha svaret
    • method: (GET/POST/PATCH/DELETE)
    • url: relativ sökväg
  • Headers: Content-Type: application/json

{ "requests": 
   [ {
      "id": "1",
      "method": "GET",
      "url": "/me/memberOf"
    },
    {
      "id": "2",
      "method": "GET",
      "url": "/me/planner/tasks"
    } ]
}
Implementera Azure-säkerhet för utvecklare

Batchsvar

  • Varje post representerar en förfrågan
{
  "responses": [
    {  "id": "1", 
        "status": 200, 
        "body": { "value": [/* ... */]}},
    { 
        "id": "2", 
        "status": 403, 
        "body": { "error": [/* ... */]}}
  ]
}

Implementera Azure-säkerhet för utvecklare

Vad varje svar innehåller

  • Varje svarsobjekt innehåller

    • id: matchar den ursprungliga förfrågan

    • status: HTTP-status för det objektet

      • 200: OK
      • 403: Förbjuden
    • headers: (t.ex. Content-Type)

    • body: data eller felobjekt

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

Implementera Azure-säkerhet för utvecklare

Nu kör vi en övning!

Implementera Azure-säkerhet för utvecklare

Preparing Video For Download...