Uporaba API-ja za OneDrive za oštevilčenje več kot 200 elementov v mapi
Delovno okolje
- Visual Studio
-
- Visual Studio 2022
- .MREŽA
-
- .NET 8
- Microsoftov API za preverjanje pristnosti
-
- 2.0 OAuth 2
- Microsoft OneDrive API
-
- 1.0
- Microsoft.Graph
-
- 5.68.0
- Vrste Microsoftovih računov
-
- Službeni ali šolski račun
Predpogoji
- Visual Studio
-
- Ena od različic
- .MREŽA
-
- Ena od različic
- Microsoftov API za preverjanje pristnosti
-
- 2.0 OAuth 2
- Microsoft OneDrive API
-
- 1.0
- Microsoft.Graph
-
- 5.XX
- Vrste Microsoftovih računov
-
- Službeni ali šolski račun
Največje število elementov, ki jih je mogoče pridobiti hkrati
Pri pridobivanju vsebine mape z API-jem za OneDrive je največje število, ki ga je mogoče pridobiti naenkrat, 200. To številko najdete tudi na uradni spletni strani spodaj.
To velja tudi, če neposredno pritisnete URL, pa Microsoft.Graph
tudi, če uporabljate knjižnico.
Naslednja koda, ki je bila omenjena v prejšnjih nasvetih, pridobi le do 200 rezultatov.
Napak ne bo prišlo, vendar lahko preverite,DriveItemCollectionResponse.OdataNextLink
ali je več kot 201 element, tako da preverite, ali je vrednost lastnosti nastavljena.
// フォルダ内アイテム一覧取得
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}");
}
Če ga želite dobiti z zahtevo HTTP, morate dostopati do URL-ja enega za drugim, @odata.nextLink
da ga dobite.
Microsoft.Graph
Če uporabljate knjižnico, lahko lažje pridobite več kot 200 elementov.
PageIterator
Obstaja razred, ki se imenuje , zato ga morate le uporabiti. Uporabite ga na naslednji način:
// フォルダ内アイテム一覧取得
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();
Ko prejmete odgovor seznama elementov mape (DriveItemCollectionResponse
)
PageIterator.CreatePageIterator
Določite ga kot drugi argument metode.
Tretji argument je povratni klic, ki se pokliče za postavko posebej, tako da, če ga navedete, bi morali biti sposobni pridobiti vse elemente.
PageIterator.CreatePageIterator
Mimogrede, samo ustvarja iteracijo, zato moramo metodo poklicati na koncu PageIterator.IterateAsync
.