GitLab API - 如何获取存储库/项目文件和元数据?

Dou*_*res 6 python git json gitlab gitlab-api

我是 GitLab 的新手并使用 API 调用,并且对如何调用以获取存储库/项目文件和元数据感到困惑。我当前的 API 调用如下:

https://gitlab.com/api/v3/projects?private_token=privateToken
Run Code Online (Sandbox Code Playgroud)

上面一行末尾的 privateToken 被替换为我出于明显安全原因而取出的私有令牌。

这将返回给我描述我拥有的所有项目的 json,但我想更深入地查看有关存储在每个项目/存储库中的文件的特定信息。在 GitLab API 文档网站上,它列出了以下内容:

GET /projects/:id/repository/files/:file_path
Run Code Online (Sandbox Code Playgroud)

但是,由于我通常不熟悉 GitLab 和 API 调用,因此我对如何编辑我的第一个链接以检索此信息感到困惑。

理想情况下,我希望能够深入到 python 中的项目/存储库文件和元数据,而不必编辑上面的第一个链接,但我不确定这是否可行。GitLab 如何返回json?作为散列表的散列表,如果是这样,我如何浏览它?

任何关于如何解析 json 并在其中深入钻探的说明将不胜感激!

我正在使用 Python 3.6.1。

谢谢!

小智 7

Python 解决方案 关于 gitlab api 的非常有用的信息。

python-gitlab.readthedocs.io

import gitlab
# private token or personal token authentication
gl = gitlab.Gitlab('https://gitlab.company.be', private_token='dklsfjksldjfkdsjf', api_version=4)
gl.auth()

project = gl.projects.get('path/to/project')
items = project.repository_tree()

print(items)
Run Code Online (Sandbox Code Playgroud)


ane*_*oid 2

您已经在评论中部分回答了自己的问题(您可以将其发布为答案)。

至于:file_path,请查看repo 文件的 API

GET /projects/:id/repository/files/:file_path
Run Code Online (Sandbox Code Playgroud)

冰壶:

curl --request GET --header 'PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK' \
'https://gitlab.example.com/api/v4/projects/13083/repository/files/app%2Fmodels%2Fkey%2Erb?ref=master'
Run Code Online (Sandbox Code Playgroud)

您还没有给出file_path您想要使用的 a,因此以 gitlab-ce 为例 - 该文件"app/models/key.rb"被 url 编码为app%2Fmodels%2Fkey%2Erb

curl --request GET \
'https://gitlab.com/api/v3/projects/13083/repository/files/app%2Fmodels%2Fkey%2Erb?ref=master'
Run Code Online (Sandbox Code Playgroud)

可以project id指定为整数idURL 编码的路径。因此13083,项目命名空间gitlab-org/gitlab-ceurl-encoded 可以用作:

curl --request GET \
'https://gitlab.com/api/v3/projects/gitlab-org%2Fgitlab-ce/repository/files/app%2Fmodels%2Fkey%2Erb?ref=master'
Run Code Online (Sandbox Code Playgroud)

您可能还想考虑使用现有的 API,例如pyapi-gitlab