OneDrive API izmantošana, lai mapē uzskaitītu vairāk nekā 200 vienumus
Darbības vide
- Visual Studio
-
- Visual Studio 2022
- .NETO
-
- .NET 8
- Microsoft autentifikācijas API
-
- 2.0 OAuth 2
- Microsoft OneDrive API
-
- 1.0
- Microsoft.Graph
-
- 5.68.0
- Microsoft kontu tipi
-
- Darba vai mācību konts
Priekšnoteikumi
- Visual Studio
-
- Viena no versijām
- .NETO
-
- Viena no versijām
- Microsoft autentifikācijas API
-
- 2.0 OAuth 2
- Microsoft OneDrive API
-
- 1.0
- Microsoft.Graph
-
- 5.XX
- Microsoft kontu tipi
-
- Darba vai mācību konts
Maksimālais vienumu skaits, ko var izgūt vienā reizē
Izgūstot mapes saturu ar OneDrive API, maksimālais skaits, ko var izgūt vienā reizē, ir 200. Šo skaitli var atrast arī zemāk esošajā oficiālajā tīmekļa vietnē.
Tas ir spēkā pat tad, ja tieši nospiežat vietrādi URL, bet Microsoft.Graph
arī tad, ja izmantojat bibliotēku.
Šis kods, kas tika minēts iepriekšējos padomos, izgūst tikai līdz 200 rezultātiem.
Kļūdas neradīsies, taču varat pārbaudīt, vai ir vairāk nekā 201 vienums, pārbaudot,DriveItemCollectionResponse.OdataNextLink
vai ir iestatīta īpašuma vērtība.
// フォルダ内アイテム一覧取得
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}");
}
Ja vēlaties to iegūt, izmantojot HTTP pieprasījumu, jums @odata.nextLink
ir jāpiekļūst vietrādim URL pa vienam, lai to iegūtu.
Microsoft.Graph
Ja izmantojat bibliotēku, ir vienkāršāks veids, kā iegūt visus vairāk nekā 200 vienumus.
PageIterator
Ir klase, ko sauc par , tāpēc viss, kas jums jādara, ir to izmantot. Izmantojiet to šādi:
// フォルダ内アイテム一覧取得
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();
Kad esat saņēmis mapes vienumu saraksta atbildi (DriveItemCollectionResponse
)
PageIterator.CreatePageIterator
Norādiet to kā metodes otro argumentu.
Trešais arguments ir atzvanīšana, kas tiek izsaukta par katru vienumu atsevišķi, tāpēc, ja to uzskaitāt, jums vajadzētu būt iespējai iegūt visus vienumus.
PageIterator.CreatePageIterator
Starp citu, ir tikai iterācijas ģenerēšana, tāpēc mums ir nepieciešams izsaukt metodi beigās PageIterator.IterateAsync
.