如何使用gitlab api获取子文件夹和文件

Mal*_*una 8 gitlab

我正在使用 gitlab api 来获取文件和文件夹并成功,

但是我只能获取目录名称,而不能获取其子文件夹和文件。

那么,我怎样才能获得我的存储库的完整树。

请告诉我。

提前致谢,马利卡朱纳

Ber*_*tel 8

休息API

您可以使用递归选项来使用 /projects/:id/repository/tree?recursive=true 获取完整的树

例如:https://your_gitlab_host/api/v4/projects/:id/repository/tree?recursive=true&per_page=100

GraphQL API

您还可以使用最近发布的Gitlab GraphQL API以递归方式获取树:

{
  project(fullPath: "project_name_here") {
    repository {
      tree(ref: "master", recursive: true){
        blobs{
          nodes {
            name
            type
            flatPath
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

您可以访问以下 URL:https://$gitlab_url/-/graphql-explorer 并执行上述查询

& 的示例:

gitlab_url=<your gitlab host>
access_token=<your access token>
project_name=<your project name>
branch=master

curl -s -H "Authorization: Bearer $access_token" \
     -H "Content-Type:application/json" \
     -d '{ 
          "query": "{ project(fullPath: \"'$project_name'\") { repository { tree(ref: \"'$branch'\", recursive: true){ blobs{ nodes { name type flatPath }}}}}}"
      }' "https://$gitlab_url/api/graphql" | jq '.'
Run Code Online (Sandbox Code Playgroud)


Mal*_* Yu 7

根据API,我们可以使用

GET /projects/:id/repository/tree

列出项目中的文件和目录。但是我们只能通过这种方式获取repo顶层的文件和目录,以及带有param的顶层目录的子目录path

script/js/components例如,如果您想获取 的目录,您可以使用

GET /projects/:id/repository/tree?path=script/js/components