Uporaba API-ja za OneDrive za oštevilčenje več kot 200 elementov v mapi

Stran posodobljena :
Datum ustvarjanja strani :

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 .