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.

Спасибо!


person Doug Andres    schedule 23.06.2017    source источник
comment
Ответ: После дальнейшего тестирования разобрался. После выполнения общего вызова API вы можете взять идентификатор любого проекта из первого вызова, поместить его после «/ projects», а затем перейти к любой информации, которая вам нужна. Не удалось определить ': file_path', но смог заставить работать другие вызовы API. gitlab.com/api/v3/projects/id(id номер из gitlab ) / репозиторий / дерево? private_token = privateToken   -  person Doug Andres    schedule 28.06.2017


Ответы (2)


Вы частично ответили на свой вопрос в комментарии (вы можете опубликовать его как ответ).

Что касается :file_path, обратите внимание на API для файлов репо.

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 - файл _ 5_, URL-адрес закодирован как app%2Fmodels%2Fkey%2Erb:

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

project id можно указать как целое число id или путь в кодировке URL. Таким образом, вместо 13083 пространство имен проекта gitlab-org/gitlab-ce в кодировке url может использоваться как:

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

Вы также можете использовать существующий API, например pyapi-gitlab.

person aneroid    schedule 30.06.2017

Решение 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)
person Shwans    schedule 12.04.2018