GitLab API - 如何列出子文件夹中的所有文件

GitLab API - How to list all files in subfolder

我花了很多时间尝试让这行看似简单的代码使用 C# 工作。正在尝试获取我的存储库中所有文件的列表。
文件结构如下:

MyRepo
-directory_01
--myFile_01.jpg
--myFile_02.jpg

这行代码列出了我所有的目录并且效果很好:

var streamTask = client.GetStringAsync(https://myURL/api/v4/projects/myRepo/repository/tree?private_token=myToken"

根据 api,要仅获取我的文件,我应该使用 files/:file_path 属性或 archive.<file extension> 来获取我的文件。

//Get all .jpg files
var streamTask = client.GetStringAsync(https://myURL/api/v4/projects/myRepo/repository/archive.jpg?private_token=myToken"

OR
//Get one file
var streamTask = client.GetStringAsync(https://myURL/api/v4/projects/myRepo/repository/files/directory_01%2FmyFile_01%2Ejpg?private_token=myToken"

//result: 404

当你这个API你还需要通过branch name

改变

var streamTask = client.GetStringAsync(https://myURL/api/v4/projects/myRepo/repository/files/directory_01%2FmyFile_01%2Ejpg?private_token=myToken"

var streamTask = client.GetStringAsync(https://myURL/api/v4/projects/myRepo/repository/files/directory_01%2FmyFile_01%2Ejpg?private_token=myToken&ref=<branch_name>"

为了防止其他人遇到这个问题,这里有一个方法可以解决这个问题:

    // Get list of files***********
    string treeUri = $"{project}tree?private_token={projectToken}&ref=master";
    string treeData = await client.GetStringAsync(treeUri);
    
    List<AssetEntry> json = System.Text.Json.JsonSerializer.Deserialize<List<AssetEntry>>(treeData);
    Console.WriteLine("FILE LIST:\n");

    foreach (var item in json)
    {
        Console.WriteLine(item.name + " " );
    }