OneDrive API izmantošana, lai mapē uzskaitītu vairāk nekā 200 vienumus

Lapa atjaunota :
Lapas izveides datums :

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 .