사용자의 이메일을 일괄 로드

완료됨

JavaScript 앱을 빌드하고 Microsoft 365에 연결하고 Microsoft Graph를 사용하여 사용자의 최근 10개 전자 메일을 표시했습니다. 이제 사용자가 10개 항목의 일괄 처리로 이메일을 로드할 수 있도록 앱을 확장해 보겠습니다.

Microsoft Graph를 사용하여 페이징된 데이터 검색

이전에 사용한 메시지 API와 같은 데이터 컬렉션을 반환하는 Microsoft Graph API를 호출하면 Microsoft 365에 저장된 데이터의 하위 집합을 받습니다. 앱에서 검색할 데이터가 더 있는지 확인하려면 응답에 @odata.nextLink 속성이 포함되어 있는지 확인하세요.

var emails = graphClient
  .api('/me/messages')
  .select('subject,receivedDateTime')
  .orderby('receivedDateTime desc')
  .top(10)
  .get();

if (emails['@odata.nextLink']) {
  // more data available
}

@odata.nextLink 속성에는 결과의 두 번째 페이지를 검색하기 위해 호출할 수 있는 전체 URL이 포함되어 있습니다. 이 URL은 검색할 속성, 데이터 정렬 방법, 가져올 항목 수와 같은 초기 요청의 모든 구성을 유지합니다.

다음 데이터 배치를 로드하려면 @odata.nextLink에서 반환된 URL을 graphClient에 전달합니다.

var emails = graphClient
  .api('/me/messages')
  .select('subject,receivedDateTime')
  .orderby('receivedDateTime desc')
  .top(10)
  .get();

if (emails['@odata.nextLink']) {
  var moreEmails = graphClient
    .api(emails['@odata.nextLink'])
    .get();
}

결과의 두 번째 페이지를 검색한 후 결과에 @odata.nextLink 속성이 설정되어 있는지 확인하여 사용 가능한 데이터가 더 있는지 확인할 수 있습니다.

주의

Microsoft Graph는 OData 4 표준을 따릅니다. 표준의 일부는 $top$skip 매개 변수의 조합(Microsoft Graph SDK의 topskip 메서드)을 사용하여 데이터의 특정 페이지를 검색하는 기능입니다. 이메일 폴더에는 페이징에 영향을 줄 수 있는 이메일 이외의 데이터가 포함될 수 있기 때문에 이메일로 작업할 때는 불가능합니다. 이것이 이메일로 작업할 때 항상 @odata.nextLink 값을 사용하여 더 많은 데이터를 로드해야 하는 이유입니다.

다음 단계

사용자가 더 많은 이메일을 일괄적으로 로드할 수 있도록 앱을 확장해 보겠습니다.