OneDrive API를 사용하여 폴더에 있는 200개 이상의 항목 열거
페이지 업데이트 :
페이지 생성 날짜 :
운영 환경
- 비주얼 스튜디오
-
- 비주얼 스튜디오 2022
- .그물
-
- .그물 8
- Microsoft 인증 API
-
- 2.0 OAuth 2
- 마이크로소프트 OneDrive API
-
- 1.0
- Microsoft.그래프
-
- 5.68.0
- Microsoft 계정 유형
-
- 회사 또는 학교 계정
필수 구성 요소
- 비주얼 스튜디오
-
- 버전 중 하나
- .그물
-
- 버전 중 하나
- Microsoft 인증 API
-
- 2.0 OAuth 2
- 마이크로소프트 OneDrive API
-
- 1.0
- Microsoft.그래프
-
- 5.XX
- Microsoft 계정 유형
-
- 회사 또는 학교 계정
한 번에 검색할 수 있는 최대 항목 수입니다
OneDrive API를 사용하여 폴더의 내용을 검색할 때 한 번에 검색할 수 있는 최대 수는 200개입니다. 이 그림은 아래 공식 웹 사이트에서도 찾을 수 있습니다.
이는 URL을 직접 누르는 경우에도 해당 Microsoft.Graph
되지만 라이브러리를 사용하는 경우에도 마찬가지입니다.
이전 팁에서 언급한 다음 코드는 최대 200개의 결과만 검색합니다.
오류는 발생하지DriveItemCollectionResponse.OdataNextLink
않지만 속성 값이 설정되어 있는지 여부를 확인하여 201개 이상의 항목이 있는지 확인할 수 있습니다.
// フォルダ内アイテム一覧取得
var folderChildren = await graphClient.Drives[drive.Id].Items[folderItem.Id].Children.GetAsync();
if (folderChildren == null || folderChildren.Value == null)
{
Console.WriteLine("フォルダの一覧を取得できませんでした。");
return;
}
foreach (var item in folderChildren.Value)
{
Console.WriteLine($"Type={(item.File != null ? "File" : "Folder")}, Id={item.Id}, Name={item.Name}, Size={item.Size}");
}
HTTP 요청 @odata.nextLink
으로 얻으려면 하나씩 URL에 액세스하여 가져와야합니다.
Microsoft.Graph
라이브러리를 사용하는 경우 200개 이상의 항목을 모두 가져오는 더 쉬운 방법이 있습니다.
PageIterator
라는 클래스가 있으므로 사용하기만 하면 됩니다. 다음과 같이 사용하십시오.
// フォルダ内アイテム一覧取得
var folderChildren = await graphClient.Drives[drive.Id].Items[folderItem.Id].Children.GetAsync();
if (folderChildren == null || folderChildren.Value == null)
{
Console.WriteLine("フォルダの一覧を取得できませんでした。");
return;
}
var pageIterator = PageIterator<DriveItem, DriveItemCollectionResponse>.CreatePageIterator(
graphClient,
folderChildren,
(item) =>
{
Console.WriteLine($"Type={(item.File != null ? "File" : "Folder")}, Id={item.Id}, Name={item.Name}, Size={item.Size}");
return true; // false を返すまで次のアイテムを列挙します
});
await pageIterator.IterateAsync();
폴더 항목 목록 응답을 받으면 ()DriveItemCollectionResponse
PageIterator.CreatePageIterator
메서드의 두 번째 인수로 지정합니다.
세 번째 인수는 항목별로 호출되는 콜백이므로 나열하면 모든 항목을 가져올 수 있습니다.
PageIterator.CreatePageIterator
그건 그렇고, 단지 반복을 생성하고 있으므로 마지막 PageIterator.IterateAsync
에 메소드를 호출해야합니다.