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 보안 구현

배칭 비유: 온라인 장바구니

  • 여러 항목하나의 장바구니
  • 결제 1회, 영수증 1장

비유 - 온라인 장바구니

개발자를 위한 Azure 보안 구현

배칭

  • 여러 Graph 요청을 하나의 HTTP 호출로 결합
  • 하나의 페이로드 -> 하나의 응답에 모두 포함

  • 장점

    • 왕복 감소, 지연 시간 단축
    • 대시보드에 적합
  • 제한

    • 배치당 최대 20개 요청

배칭

개발자를 위한 Azure 보안 구현

배치 요청 엔드포인트

  • 엔드포인트

    • 메서드: POST
    • 엔드포인트:https://graph.microsoft.com/v1.0/$batch
  • users 같은 특정 리소스 대신 $batch 사용

배치 요청 엔드포인트

개발자를 위한 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...