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

时间:2017-06-23 22:16:24

标签: python json git gitlab gitlab-api

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

https://gitlab.com/api/v3/projects?private_token=privateToken

上面一行末尾的privateToken被我的私人令牌所取代,出于明显的安全原因我已将其取出。

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

GET /projects/:id/repository/files/:file_path

但是,由于我一般都是GitLab和API调用的新手,所以我很困惑如何编辑我的第一个链接来检索这些信息。

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

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

我正在使用Python 3.6.1。

谢谢!

2 个答案:

答案 0 :(得分:0)

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

至于:file_path,请查看API for repo files

GET /projects/:id/repository/files/:file_path

卷曲:

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

您尚未获得想要使用的file_path,因此以gitlab-ce为例 - 文件"app/models/key.rb",将其编号为app%2Fmodels%2Fkey%2Erb:< / p>

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

project id可以指定为整数idURL-encoded path。因此,项目名称空间13083 url-encoded不是gitlab-org/gitlab-ce,而是可以用作:

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

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

答案 1 :(得分:0)

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)