Розширене використання Microsoft Graph

Реалізація безпеки Azure для розробників

Anushika Agarwal

Cloud Data Engineer

Аналогія: походи по продукти

  • Несіть покупки кількома ходками

  • Легше, швидше й безпечніше

Походи по продукти

Реалізація безпеки Azure для розробників

Пагінація

  • Ділить великі результати на менші сторінки
  • Швидші відповіді та менше таймаутів
  • Як отримуються наступні сторінки?

Пагінація

Реалізація безпеки Azure для розробників

Приклад: PeopleSphere використовує пагінацію

  • Тисячі записів працівників отримуються зручно сторінками

Приклад — PeopleSphere і пагінація

Реалізація безпеки Azure для розробників

Пагінація на боці сервера

  • Сервіс задає типовий розмір сторінки
  • Клієнт не вказує розмір
  • Приклад
    • GET /v1.0/users : (типово) Повертає 100 елементів на сторінку

Пагінація на боці сервера

Реалізація безпеки Azure для розробників

Пагінація на боці клієнта

  • Клієнт задає кількість елементів на сторінку

Пагінація на боці клієнта

Реалізація безпеки Azure для розробників

Параметри запиту для пагінації

  • Параметри запиту

    • $top: кількість елементів на сторінку.

    Параметри запиту — Top

  • $skip: зсув; почати після перших N елементів

    Параметри запиту — Skip

Реалізація безпеки Azure для розробників

Приклад пагінації на боці клієнта

  • Приклад:
    • https://graph.microsoft.com/v1.0/groups?$top=2

Пагінація на боці клієнта

Реалізація безпеки Azure для розробників

Аналогія пакетування: кошик інтернет-магазину

  • Кілька товарів в одному кошику
  • Один розрахунок, один чек

Аналогія — кошик інтернет-магазину

Реалізація безпеки Azure для розробників

Пакетування

  • Поєднайте кілька запитів Graph в один HTTP-виклик
  • Один payload → одна відповідь з усіма результатами

  • Переваги

    • Менше звернень, нижча затримка
    • Ідеально для дашбордів.
  • Обмеження

    • До 20 запитів у пакеті

Пакетування

Реалізація безпеки Azure для розробників

Кінцева точка пакетного запиту

  • Кінцева точка

    • Метод: POST
    • Endpoint:https://graph.microsoft.com/v1.0/$batch
  • $batch замість конкретного ресурсу, як-от users

Кінцева точка пакетного запиту

Реалізація безпеки Azure для розробників

Тіло пакетного запиту

  • Тіло — об'єкт JSON
  • Містить одну властивість: requests
  • requests — це масив (до 20 елементів)
{ "requests": 
   [ {
      "id": "1",
      "method": "GET",
      "url": "/me/memberOf"
    },
    {
      "id": "2",
      "method": "GET",
      "url": "/me/planner/tasks"
    } ]
}
Реалізація безпеки Azure для розробників

Елементи запиту та заголовки

  • Кожен елемент запиту має містити

    • id: унікальна мітка для зіставлення відповіді
    • method: (GET/POST/PATCH/DELETE)
    • url: відносний шлях
  • Заголовки: Content-Type: application/json

{ "requests": 
   [ {
      "id": "1",
      "method": "GET",
      "url": "/me/memberOf"
    },
    {
      "id": "2",
      "method": "GET",
      "url": "/me/planner/tasks"
    } ]
}
Реалізація безпеки Azure для розробників

Пакетна відповідь

  • Кожен запис — це окремий запит
{
  "responses": [
    {  "id": "1", 
        "status": 200, 
        "body": { "value": [/* ... */]}},
    { 
        "id": "2", 
        "status": 403, 
        "body": { "error": [/* ... */]}}
  ]
}

Реалізація безпеки Azure для розробників

Що містить кожна відповідь

  • Кожен елемент відповіді містить

    • id: відповідає оригінальному запиту

    • status: HTTP-статус для цього елемента

      • 200: OK
      • 403: Заборонено
    • headers: напр., Content-Type

    • body: дані або об'єкт помилки

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

Реалізація безпеки Azure для розробників

Давайте потренуємось!

Реалізація безпеки Azure для розробників

Preparing Video For Download...