การใช้งาน Microsoft Graph ขั้นสูง

การรักษาความปลอดภัยบน Azure สำหรับนักพัฒนา

Anushika Agarwal

Cloud Data Engineer

อุปมา: การขนของชำ

  • ขนของชำด้วยการเดินทางหลายเที่ยวที่เล็กลง

  • เบากว่า เร็วกว่า และปลอดภัยกว่า

การเดินทางขนของชำ

การรักษาความปลอดภัยบน Azure สำหรับนักพัฒนา

Pagination

  • แบ่งผลลัพธ์ขนาดใหญ่เป็นหน้าย่อย
  • ตอบสนองเร็วขึ้น และลด timeout
  • หน้าถัดไปดึงข้อมูลอย่างไร?

Pagination

การรักษาความปลอดภัยบน Azure สำหรับนักพัฒนา

ตัวอย่าง: PeopleSphere ใช้ Pagination

  • ดึงข้อมูลพนักงานหลายพันรายการเป็นหน้าที่จัดการได้

ตัวอย่าง - PeopleSphere Pagination

การรักษาความปลอดภัยบน Azure สำหรับนักพัฒนา

Server-side pagination

  • Service กำหนดขนาดหน้าเริ่มต้น
  • Client ไม่ต้องระบุขนาด
  • ตัวอย่าง
    • GET /v1.0/users : (default) คืนค่า 100 รายการ ต่อหน้า

Server-Side Pagination

การรักษาความปลอดภัยบน Azure สำหรับนักพัฒนา

Client-side pagination

  • Client ระบุจำนวนรายการต่อหน้าเอง

Client-Side Pagination

การรักษาความปลอดภัยบน Azure สำหรับนักพัฒนา

Query parameters สำหรับ pagination

  • Query Parameters

    • $top: จำนวนรายการต่อหน้า

    Query Parameters - Top

  • $skip: offset; เริ่มหลังจาก N รายการแรก

    Query Parameters - Skip

การรักษาความปลอดภัยบน Azure สำหรับนักพัฒนา

ตัวอย่าง client-side pagination

  • ตัวอย่าง:
    • https://graph.microsoft.com/v1.0/groups?$top=2

Client-Side Pagination

การรักษาความปลอดภัยบน Azure สำหรับนักพัฒนา

อุปมา Batching: ตะกร้าสินค้าออนไลน์

  • หลายรายการในตะกร้าเดียว
  • ชำระเงินครั้งเดียว รับใบเสร็จใบเดียว

อุปมา - ตะกร้าสินค้าออนไลน์

การรักษาความปลอดภัยบน Azure สำหรับนักพัฒนา

Batching

  • รวม Graph request หลายรายการไว้ในการเรียก HTTP ครั้งเดียว
  • payload เดียว -> response เดียวพร้อมผลลัพธ์ทั้งหมด

  • ประโยชน์

    • ลดจำนวนการเรียก และลด latency
    • เหมาะสำหรับ dashboard
  • ข้อจำกัด

    • สูงสุด 20 request ต่อ batch

Batching

การรักษาความปลอดภัยบน Azure สำหรับนักพัฒนา

Batch request endpoint

  • Endpoint

    • Method: POST
    • Endpoint:https://graph.microsoft.com/v1.0/$batch
  • ใช้ $batch แทน resource เฉพาะเจาะจง เช่น users

Batch request endpoint

การรักษาความปลอดภัยบน Azure สำหรับนักพัฒนา

Batch request body

  • Body เป็นออบเจกต์ JSON
  • มี property เดียวคือ requests
  • requests เป็นarray (สูงสุด 20 รายการ)
{ "requests": 
   [ {
      "id": "1",
      "method": "GET",
      "url": "/me/memberOf"
    },
    {
      "id": "2",
      "method": "GET",
      "url": "/me/planner/tasks"
    } ]
}
การรักษาความปลอดภัยบน Azure สำหรับนักพัฒนา

Request items และ headers

  • แต่ละ request item ต้องมี

    • id: label ที่ไม่ซ้ำกัน สำหรับจับคู่กับ response
    • method: (GET/POST/PATCH/DELETE)
    • url: relative path
  • Headers: Content-Type: application/json

{ "requests": 
   [ {
      "id": "1",
      "method": "GET",
      "url": "/me/memberOf"
    },
    {
      "id": "2",
      "method": "GET",
      "url": "/me/planner/tasks"
    } ]
}
การรักษาความปลอดภัยบน Azure สำหรับนักพัฒนา

Batch response

  • แต่ละ entry แทนrequest หนึ่งรายการ
{
  "responses": [
    {  "id": "1", 
        "status": 200, 
        "body": { "value": [/* ... */]}},
    { 
        "id": "2", 
        "status": 403, 
        "body": { "error": [/* ... */]}}
  ]
}

การรักษาความปลอดภัยบน Azure สำหรับนักพัฒนา

สิ่งที่แต่ละ response มี

  • แต่ละ response item ประกอบด้วย

    • id: ตรงกับ request เดิม

    • status: HTTP status ของรายการนั้น

      • 200: OK
      • 403: Forbidden
    • headers: (เช่น Content-Type)

    • body: ข้อมูลหรือ error object

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

การรักษาความปลอดภัยบน Azure สำหรับนักพัฒนา

มาฝึกกันเถอะ!

การรักษาความปลอดภัยบน Azure สำหรับนักพัฒนา

Preparing Video For Download...