Utilisation avancée de Microsoft Graph

Mettre en œuvre la sécurité Azure pour les développeurs

Anushika Agarwal

Cloud Data Engineer

Analogie : voyages d'épicerie

  • Transporter l'épicerie en plusieurs petits voyages

  • Plus léger, plus rapide et plus sûr

Voyages d'épicerie

Mettre en œuvre la sécurité Azure pour les développeurs

Pagination

  • Découpe les grands résultats en petites pages
  • Réponses plus rapides et moins d'expirations
  • Comment récupérer les pages suivantes ?

Pagination

Mettre en œuvre la sécurité Azure pour les développeurs

Exemple : PeopleSphere avec pagination

  • Des milliers de dossiers d'employés récupérés en pages gérables

Exemple - Pagination PeopleSphere

Mettre en œuvre la sécurité Azure pour les développeurs

Pagination côté serveur

  • Le service choisit une taille de page par défaut
  • Le client ne précise pas la taille
  • Exemple
    • GET /v1.0/users : (défaut) renvoie 100 éléments par page

Pagination côté serveur

Mettre en œuvre la sécurité Azure pour les développeurs

Pagination côté client

  • Le client précise le nombre d'éléments par page

Pagination côté client

Mettre en œuvre la sécurité Azure pour les développeurs

Paramètres de requête pour la pagination

  • Paramètres de requête

    • $top : nombre d'éléments par page.

    Paramètres de requête - Top

  • $skip : décalage ; commencer après les N premiers éléments

    Paramètres de requête - Skip

Mettre en œuvre la sécurité Azure pour les développeurs

Exemple : pagination côté client

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

Pagination côté client

Mettre en œuvre la sécurité Azure pour les développeurs

Analogie du lot : panier d'achats en ligne

  • Plusieurs articles dans un seul panier
  • Un paiement, un reçu

Analogie - Panier d'achats en ligne

Mettre en œuvre la sécurité Azure pour les développeurs

Traitement par lots

  • Combiner plusieurs requêtes Graph en un seul appel HTTP
  • Une charge utile → une réponse avec tous les résultats

  • Avantages

    • Moins d'allers-retours, latence réduite
    • Idéal pour les tableaux de bord.
  • Limite

    • Jusqu'à 20 requêtes par lot

Traitement par lots

Mettre en œuvre la sécurité Azure pour les développeurs

Point de terminaison pour requête par lots

  • Point de terminaison

    • Méthode : POST
    • Point de terminaison : https://graph.microsoft.com/v1.0/$batch
  • $batch au lieu d'une ressource précise comme users

Point de terminaison de la requête par lots

Mettre en œuvre la sécurité Azure pour les développeurs

Corps de la requête par lots

  • Le corps est un objet JSON
  • Contient une propriété : requests
  • requests est un tableau (jusqu'à 20 éléments)
{ "requests": 
   [ {
      "id": "1",
      "method": "GET",
      "url": "/me/memberOf"
    },
    {
      "id": "2",
      "method": "GET",
      "url": "/me/planner/tasks"
    } ]
}
Mettre en œuvre la sécurité Azure pour les développeurs

Éléments de requête et en-têtes

  • Chaque élément de requête exige

    • id : étiquette unique pour faire correspondre la réponse
    • method : (GET/POST/PATCH/DELETE)
    • url : chemin relatif
  • En-têtes : Content-Type: application/json

{ "requests": 
   [ {
      "id": "1",
      "method": "GET",
      "url": "/me/memberOf"
    },
    {
      "id": "2",
      "method": "GET",
      "url": "/me/planner/tasks"
    } ]
}
Mettre en œuvre la sécurité Azure pour les développeurs

Réponse du lot

  • Chaque entrée représente une requête
{
  "responses": [
    {  "id": "1", 
        "status": 200, 
        "body": { "value": [/* ... */]}},
    { 
        "id": "2", 
        "status": 403, 
        "body": { "error": [/* ... */]}}
  ]
}

Mettre en œuvre la sécurité Azure pour les développeurs

Contenu de chaque réponse

  • Chaque élément de réponse inclut

    • id : correspond à la requête initiale

    • status : code HTTP pour cet élément

      • 200 : OK
      • 403 : Interdit
    • headers : (p. ex., Content-Type)

    • body : données ou objet d'erreur

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

Mettre en œuvre la sécurité Azure pour les développeurs

Passons à la pratique !

Mettre en œuvre la sécurité Azure pour les développeurs

Preparing Video For Download...