Zaawansowane użycie Microsoft Graph

Implementowanie zabezpieczeń Azure dla deweloperów

Anushika Agarwal

Cloud Data Engineer

Analogia: zakupy w partiach

  • Przenoszenie zakupów w mniejszych partiach

  • Lżej, szybciej i bezpieczniej

Zakupy w partiach

Implementowanie zabezpieczeń Azure dla deweloperów

Stronicowanie

  • Dzieli duże wyniki na mniejsze strony
  • Szybsze odpowiedzi i mniej przekroczeń czasu
  • Jak pobierane są kolejne strony?

Stronicowanie

Implementowanie zabezpieczeń Azure dla deweloperów

Przykład: PeopleSphere ze stronicowaniem

  • Tysiące rekordów pracowników pobierane w zarządzalnych stronach

Przykład – stronicowanie PeopleSphere

Implementowanie zabezpieczeń Azure dla deweloperów

Stronicowanie po stronie serwera

  • Serwis ustala domyślny rozmiar strony
  • Klient nie określa rozmiaru
  • Przykład
    • GET /v1.0/users : (domyślnie) Zwraca 100 elementów na stronę

Stronicowanie po stronie serwera

Implementowanie zabezpieczeń Azure dla deweloperów

Stronicowanie po stronie klienta

  • Klient określa liczbę elementów na stronę

Stronicowanie po stronie klienta

Implementowanie zabezpieczeń Azure dla deweloperów

Parametry zapytania dla stronicowania

  • Parametry zapytania

    • $top: liczba elementów na stronę.

    Parametry zapytania - Top

  • $skip: przesunięcie; pomiń pierwsze N elementów

    Parametry zapytania - Skip

Implementowanie zabezpieczeń Azure dla deweloperów

Przykład stronicowania po stronie klienta

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

Stronicowanie po stronie klienta

Implementowanie zabezpieczeń Azure dla deweloperów

Analogia grupowania: koszyk zakupowy

  • Wiele produktów w jednym koszyku
  • Jedna płatność, jeden paragon

Analogia – koszyk zakupowy

Implementowanie zabezpieczeń Azure dla deweloperów

Grupowanie żądań (Batching)

  • Łączenie wielu żądań Graph w jednym wywołaniu HTTP
  • Jeden ładunek -> jedna odpowiedź ze wszystkimi wynikami

  • Korzyści

    • Mniej połączeń, mniejsze opóźnienia
    • Idealne dla dashboardów.
  • Limit

    • Do 20 żądań na partię

Grupowanie

Implementowanie zabezpieczeń Azure dla deweloperów

Endpoint żądania wsadowego

  • Endpoint

    • Metoda: POST
    • Endpoint:https://graph.microsoft.com/v1.0/$batch
  • $batch zamiast konkretnego zasobu, np. users

Endpoint żądania wsadowego

Implementowanie zabezpieczeń Azure dla deweloperów

Treść żądania wsadowego

  • Treść to obiekt JSON
  • Zawiera właściwość: requests
  • requests to tablica (do 20 elementów)
{ "requests": 
   [ {
      "id": "1",
      "method": "GET",
      "url": "/me/memberOf"
    },
    {
      "id": "2",
      "method": "GET",
      "url": "/me/planner/tasks"
    } ]
}
Implementowanie zabezpieczeń Azure dla deweloperów

Elementy żądania i nagłówki

  • Każdy element żądania wymaga

    • id: unikalny identyfikator do dopasowania odpowiedzi
    • method: (GET/POST/PATCH/DELETE)
    • url: ścieżka względna
  • Nagłówki: Content-Type: application/json

{ "requests": 
   [ {
      "id": "1",
      "method": "GET",
      "url": "/me/memberOf"
    },
    {
      "id": "2",
      "method": "GET",
      "url": "/me/planner/tasks"
    } ]
}
Implementowanie zabezpieczeń Azure dla deweloperów

Odpowiedź wsadowa

  • Każdy wpis reprezentuje jedno żądanie
{
  "responses": [
    {  "id": "1", 
        "status": 200, 
        "body": { "value": [/* ... */]}},
    { 
        "id": "2", 
        "status": 403, 
        "body": { "error": [/* ... */]}}
  ]
}

Implementowanie zabezpieczeń Azure dla deweloperów

Zawartość elementu odpowiedzi

  • Każdy element odpowiedzi zawiera

    • id: odpowiada oryginalnemu żądaniu

    • status: kod HTTP dla danego elementu

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

    • body: dane lub obiekt błędu

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

Implementowanie zabezpieczeń Azure dla deweloperów

Czas na ćwiczenia!

Implementowanie zabezpieczeń Azure dla deweloperów

Preparing Video For Download...