Sử dụng nâng cao Microsoft Graph

Triển khai bảo mật Azure cho nhà phát triển

Anushika Agarwal

Cloud Data Engineer

So sánh: đi mua tạp hóa

  • Chuyển hàng tạp hóa bằng nhiều chuyến nhỏ

  • Nhẹ hơn, nhanh hơn, an toàn hơn

Chuyến đi mua tạp hóa

Triển khai bảo mật Azure cho nhà phát triển

Phân trang

  • Chia kết quả lớn thành trang nhỏ
  • Phản hồi nhanh hơn, ít timeout hơn
  • Lấy các trang tiếp theo như thế nào?

Phân trang

Triển khai bảo mật Azure cho nhà phát triển

Ví dụ: PeopleSphere dùng phân trang

  • Hàng nghìn hồ sơ nhân viên được truy xuất theo trang dễ quản lý

Ví dụ - PeopleSphere dùng phân trang

Triển khai bảo mật Azure cho nhà phát triển

Phân trang phía server

  • Dịch vụ chọn kích thước trang mặc định
  • Client không chỉ định kích thước
  • Ví dụ
    • GET /v1.0/users : (mặc định) trả về 100 mục mỗi trang

Phân trang phía server

Triển khai bảo mật Azure cho nhà phát triển

Phân trang phía client

  • Client chỉ định số mục mỗi trang

Phân trang phía client

Triển khai bảo mật Azure cho nhà phát triển

Tham số truy vấn cho phân trang

  • Tham số truy vấn

    • $top: số mục mỗi trang.

    Tham số truy vấn - Top

  • $skip: độ lệch; bắt đầu sau N mục đầu

    Tham số truy vấn - Skip

Triển khai bảo mật Azure cho nhà phát triển

Ví dụ phân trang phía client

  • Ví dụ:
    • https://graph.microsoft.com/v1.0/groups?$top=2

Phân trang phía client

Triển khai bảo mật Azure cho nhà phát triển

So sánh: giỏ hàng online (Batching)

  • Nhiều mặt hàng trong một giỏ
  • Một lần thanh toán, một hóa đơn

So sánh - Giỏ hàng online

Triển khai bảo mật Azure cho nhà phát triển

Batching

  • Gộp nhiều yêu cầu Graph trong một lệnh HTTP
  • Một payload -> một phản hồi chứa tất cả kết quả

  • Lợi ích

    • Ít lượt gọi hơn, độ trễ thấp hơn
    • Lý tưởng cho dashboard
  • Giới hạn

    • Tối đa 20 yêu cầu mỗi batch

Batching

Triển khai bảo mật Azure cho nhà phát triển

Endpoint yêu cầu batch

  • Endpoint

    • Phương thức: POST
    • Endpoint:https://graph.microsoft.com/v1.0/$batch
  • $batch thay cho tài nguyên cụ thể như users

Endpoint yêu cầu batch

Triển khai bảo mật Azure cho nhà phát triển

Body yêu cầu batch

  • Body là đối tượng JSON
  • Chứa một thuộc tính: requests
  • requests là một mảng (tối đa 20 mục)
{ "requests": 
   [ {
      "id": "1",
      "method": "GET",
      "url": "/me/memberOf"
    },
    {
      "id": "2",
      "method": "GET",
      "url": "/me/planner/tasks"
    } ]
}
Triển khai bảo mật Azure cho nhà phát triển

Các mục yêu cầu và header

  • Mỗi mục yêu cầu cần

    • id: nhãn duy nhất để khớp phản hồi
    • method: (GET/POST/PATCH/DELETE)
    • url: đường dẫn tương đối
  • Headers: Content-Type: application/json

{ "requests": 
   [ {
      "id": "1",
      "method": "GET",
      "url": "/me/memberOf"
    },
    {
      "id": "2",
      "method": "GET",
      "url": "/me/planner/tasks"
    } ]
}
Triển khai bảo mật Azure cho nhà phát triển

Phản hồi batch

  • Mỗi phần tử là một yêu cầu
{
  "responses": [
    {  "id": "1", 
        "status": 200, 
        "body": { "value": [/* ... */]}},
    { 
        "id": "2", 
        "status": 403, 
        "body": { "error": [/* ... */]}}
  ]
}

Triển khai bảo mật Azure cho nhà phát triển

Thành phần của mỗi phản hồi

  • Mỗi mục phản hồi gồm

    • id: khớp yêu cầu gốc

    • status: mã trạng thái HTTP cho mục đó

      • 200: OK
      • 403: Forbidden
    • headers: (ví dụ, Content-Type)

    • body: dữ liệu hoặc đối tượng lỗi

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

Triển khai bảo mật Azure cho nhà phát triển

Ayo berlatih!

Triển khai bảo mật Azure cho nhà phát triển

Preparing Video For Download...