В мире разработки программного обеспечения GitHub – это мощный инструмент для размещения проектов и совместной работы над ними. Для программного взаимодействия с GitHub вы можете использовать его API GraphQL. В этой статье блога мы рассмотрим различные методы получения коммитов из репозитория с помощью API GitHub GraphQL. Итак, пристегните ремни и вперед!
- Аутентификация с помощью токена личного доступа.
Чтобы получить доступ к API GitHub, вам необходимо пройти аутентификацию. Создайте личный токен доступа в настройках своей учетной записи GitHub и включите его в качестве токена на предъявителя в заголовок авторизации ваших запросов GraphQL.
Пример:
import requests
headers = {
"Authorization": "Bearer YOUR_ACCESS_TOKEN"
}
response = requests.post(
"https://api.github.com/graphql",
json={"query": "YOUR_GRAPHQL_QUERY"},
headers=headers
)
print(response.json())
- Получение информации о репозитории.
Чтобы получить коммиты, нам сначала необходимо получить уникальный идентификатор репозитория. Чтобы получить эту информацию, вы можете запросить репозиторий по его владельцу и имени.
Пример:
query {
repository(owner: "OWNER_NAME", name: "REPO_NAME") {
id
}
}
- Извлечение коммитов.
После того как у вас есть идентификатор репозитория, вы можете получить список коммитов. Полеhistoryпредоставляет информацию, связанную с коммитом, например сообщение о коммите, автора, дату и т. д.
Пример:
query {
repository(owner: "OWNER_NAME", name: "REPO_NAME") {
defaultBranchRef {
target {
... on Commit {
history {
nodes {
message
author {
name
}
committedDate
}
}
}
}
}
}
}
- Ограничение количества коммитов.
По умолчанию GitHub GraphQL API возвращает ограниченное количество коммитов. Вы можете использовать аргументfirst, чтобы указать желаемое количество коммитов.
Пример:
query {
repository(owner: "OWNER_NAME", name: "REPO_NAME") {
defaultBranchRef {
target {
... on Commit {
history(first: 10) {
nodes {
message
author {
name
}
committedDate
}
}
}
}
}
}
}
- Разбиение на страницы для больших репозиториев:
Для репозиториев с большим количеством коммитов ответ API будет разбит на страницы. Вы можете использовать аргументafterдля получения последующих страниц коммитов.
Пример:
query {
repository(owner: "OWNER_NAME", name: "REPO_NAME") {
defaultBranchRef {
target {
... on Commit {
history(first: 10, after: "CURSOR") {
pageInfo {
endCursor
hasNextPage
}
nodes {
message
author {
name
}
committedDate
}
}
}
}
}
}
}
В этой статье мы рассмотрели несколько методов получения коммитов из репозитория с помощью API GitHub GraphQL. Мы рассмотрели аутентификацию, получение информации о репозитории, получение коммитов, ограничение количества коммитов и нумерацию страниц для больших репозиториев. Используя возможности GraphQL и API GitHub, вы можете создавать мощные приложения и получать глубокую информацию о своих репозиториях.
Не забывайте обрабатывать ошибки, ограничивать скорость и обеспечивать правильную обработку ошибок в коде. Приятного кодирования!