Geavanceerd gebruik van Microsoft Graph

Azure-beveiliging implementeren voor developers

Anushika Agarwal

Cloud Data Engineer

Analogie: boodschappenritjes

  • Boodschappen in kleinere ritten dragen

  • Lichter, sneller en veiliger

Boodschappenritten

Azure-beveiliging implementeren voor developers

Paginering

  • Splitst grote resultaten in kleinere pagina's
  • Snellere responses en minder time-outs
  • Hoe haal je volgende pagina's op?

Paginering

Azure-beveiliging implementeren voor developers

Voorbeeld: PeopleSphere met paginering

  • Duizenden werknemersrecords opgehaald in behapbare pagina's

Voorbeeld - PeopleSphere Paginering

Azure-beveiliging implementeren voor developers

Paginering aan serverzijde

  • Service kiest een standaard paginagrootte
  • Client specificeert de grootte niet
  • Voorbeeld
    • GET /v1.0/users : (standaard) Retourneert 100 items per pagina

Paginering aan serverzijde

Azure-beveiliging implementeren voor developers

Paginering aan clientzijde

  • Client bepaalt items per pagina

Paginering aan clientzijde

Azure-beveiliging implementeren voor developers

Queryparameters voor paginering

  • Queryparameters

    • $top: aantal items per pagina.

    Queryparameters - Top

  • $skip: offset; begin na de eerste N items

    Queryparameters - Skip

Azure-beveiliging implementeren voor developers

Voorbeeld: paginering aan clientzijde

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

Paginering aan clientzijde

Azure-beveiliging implementeren voor developers

Batching-analogie: online winkelwagen

  • Meerdere items in één winkelwagen
  • Eén betaling, één bon

Analogie - Online winkelwagen

Azure-beveiliging implementeren voor developers

Batching

  • Combineer meerdere Graph-verzoeken in één HTTP-call
  • Eén payload -> één response met alle resultaten

  • Voordelen

    • Minder trips, lagere latentie
    • Ideaal voor dashboards.
  • Limiet

    • Max. 20 requests per batch

Batching

Azure-beveiliging implementeren voor developers

Batch-endpoint

  • Endpoint

    • Methode: POST
    • Endpoint:https://graph.microsoft.com/v1.0/$batch
  • $batch in plaats van een specifieke resource zoals users

Batch request endpoint

Azure-beveiliging implementeren voor developers

Batch-body

  • Body is een JSON-object
  • Bevat één property: requests
  • requests is een array (max. 20 items)
{ "requests": 
   [ {
      "id": "1",
      "method": "GET",
      "url": "/me/memberOf"
    },
    {
      "id": "2",
      "method": "GET",
      "url": "/me/planner/tasks"
    } ]
}
Azure-beveiliging implementeren voor developers

Request-items en headers

  • Elk request-item heeft

    • id: unieke label om response te matchen
    • method: (GET/POST/PATCH/DELETE)
    • url: relatief pad
  • Headers: Content-Type: application/json

{ "requests": 
   [ {
      "id": "1",
      "method": "GET",
      "url": "/me/memberOf"
    },
    {
      "id": "2",
      "method": "GET",
      "url": "/me/planner/tasks"
    } ]
}
Azure-beveiliging implementeren voor developers

Batch-response

  • Elke entry staat voor één request
{
  "responses": [
    {  "id": "1", 
        "status": 200, 
        "body": { "value": [/* ... */]}},
    { 
        "id": "2", 
        "status": 403, 
        "body": { "error": [/* ... */]}}
  ]
}

Azure-beveiliging implementeren voor developers

Wat elke response bevat

  • Elke response bevat

    • id: matcht het oorspronkelijke request

    • status: HTTP-status voor dat item

      • 200: OK
      • 403: Forbidden
    • headers: (bijv. Content-Type)

    • body: data of error-object

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

Azure-beveiliging implementeren voor developers

Laten we oefenen!

Azure-beveiliging implementeren voor developers

Preparing Video For Download...