Utilisation avancée de Microsoft Graph

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

Anushika Agarwal

Cloud Data Engineer

Analogie : trajets pour les courses

  • Porter les courses en plusieurs petits trajets

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

Allers-retours pour les courses

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

Pagination

  • Découpe les résultats volumineux 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 fiches employés récupérées 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 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 en ligne

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

Analogie - Panier d'achat 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 les requêtes par lots

  • Point de terminaison

    • Méthode : POST
    • Endpoint :https://graph.microsoft.com/v1.0/$batch
  • $batch au lieu d'une ressource spécifique comme users

Point de terminaison de 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 doit indiquer

    • id : identifiant unique pour apparier 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 d'origine

    • 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...