Расширенные возможности Microsoft Graph

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

Anushika Agarwal

Cloud Data Engineer

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

  • Носить продукты меньшими партиями

  • Легче, быстрее и безопаснее

Grocery trips

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

Пагинация

  • Делит большие результаты на меньшие страницы
  • Быстрые ответы и меньше таймаутов
  • Как загружаются следующие страницы?
    • Ответ содержит ссылку продолжения: `@odata.nextLink`

Pagination

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

Пример: пагинация в PeopleSphere

  • Тысячи записей сотрудников загружаются постранично

Example - PeopleSphere Pagination

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

Серверная пагинация

  • Сервис задаёт размер страницы по умолчанию
  • Клиент не указывает размер
  • Пример
    • GET /v1.0/users : (по умолчанию) Возвращает 100 элементов на страницу

Server-Side Pagination

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

Клиентская пагинация

  • Клиент указывает количество элементов на странице

Client-Side Pagination

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

Параметры запроса для пагинации

  • Параметры запроса

    • $top: количество элементов на странице.

    Query Parameters - Top

  • $skip: смещение; пропустить первые N элементов

    Query Parameters - Skip

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

Пример клиентской пагинации

  • Пример:
    • https://graph.microsoft.com/v1.0/groups?$top=2

Client-Side Pagination

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

Аналогия с пакетной обработкой: онлайн-корзина

  • Несколько товаров в одной корзине
  • Одна оплата, один чек

Analogy - Online shopping cart

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

Пакетная обработка

  • Объединяет несколько запросов Graph в одном HTTP-вызове
  • Один запрос -> один ответ со всеми результатами

  • Преимущества

    • Меньше обращений, ниже задержка
    • Идеально для дашбордов.
  • Ограничение

    • До 20 запросов в пакете

Batching

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

Конечная точка пакетного запроса

  • Конечная точка

    • Метод: POST
    • Конечная точка:https://graph.microsoft.com/v1.0/$batch
  • $batch вместо конкретного ресурса, например users

Batch request endpoint

Реализация безопасности 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: Forbidden
    • headers: (например, Content-Type)

    • body: данные или объект ошибки

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

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

Давайте потренируемся!

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

Preparing Video For Download...