"OneDrive" API naudojimas norint išvardyti daugiau nei 200 elementų aplanke
Darbo aplinka
- Vizualinė studija
-
- "Visual Studio 2022"
- .GRYNOJI
-
- .NET 8
- "Microsoft" autentifikavimo API
-
- 2.0 OAuth 2
- "Microsoft OneDrive" API
-
- 1.0
- Microsoft.Graph
-
- 5.68.0
- "Microsoft" paskyrų tipai
-
- Darbo arba mokymo įstaigos paskyra
Būtinosios sąlygos
- Vizualinė studija
-
- Viena iš versijų
- .GRYNOJI
-
- Viena iš versijų
- "Microsoft" autentifikavimo API
-
- 2.0 OAuth 2
- "Microsoft OneDrive" API
-
- 1.0
- Microsoft.Graph
-
- 5.XX
- "Microsoft" paskyrų tipai
-
- Darbo arba mokymo įstaigos paskyra
Maksimalus elementų, kuriuos galima gauti vienu metu, skaičius
Gaunant aplanko turinį su OneDrive API, maksimalus skaičius, kurį galima gauti vienu metu, yra 200. Šį skaičių taip pat galima rasti žemiau esančioje oficialioje svetainėje.
Tai tiesa, net jei paspausite URL tiesiogiai, bet Microsoft.Graph
taip pat jei naudojate biblioteką.
Šis kodas, kuris buvo paminėtas ankstesniuose patarimuose, nuskaito tik iki 200 rezultatų.
Klaidų nebus, tačiau galite patikrinti,DriveItemCollectionResponse.OdataNextLink
ar yra daugiau nei 201 elementas, patikrindami, ar nustatyta turto vertė.
// フォルダ内アイテム一覧取得
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}");
}
Jei norite jį gauti pagal HTTP užklausą, turite pasiekti URL po vieną, @odata.nextLink
kad jį gautumėte.
Microsoft.Graph
Jei naudojate biblioteką, yra paprastesnis būdas gauti visus daugiau nei 200 elementų.
PageIterator
Yra klasė, vadinama , todėl tereikia ja naudotis. Naudokite jį taip:
// フォルダ内アイテム一覧取得
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();
Kai gausite aplanko elementų sąrašo atsakymą (DriveItemCollectionResponse
)
PageIterator.CreatePageIterator
Nurodykite jį kaip antrąjį metodo argumentą.
Trečiasis argumentas yra atgalinis ryšys, kuris iškviečiamas pagal kiekvieną elementą, todėl, jei jį įtrauksite į sąrašą, turėtumėte turėti galimybę gauti visus elementus.
PageIterator.CreatePageIterator
Beje, tik generuoja iteraciją, todėl turime paskambinti metodu pabaigoje PageIterator.IterateAsync
.