В этой статье описывается, как быстро приступить к работе с REST API GitHub с помощью GitHub CLI, JavaScript или curl. Более подробное руководство см. в разделе Начало работы с REST API.
Начало работы с GitHub CLI
Использование GitHub CLI в командной строке
GitHub CLI — это самый простой способ использовать REST API GitHub из командной строки.
Примечание: Следующий пример предназначен для GitHub.com. Если вы предпочитаете попробовать пример с помощью GitHub AE, необходимо заменить octocat/Spoon-Knife репозиторием на GitHub AE. Кроме того, можно повторно выполнить gh auth login команду для проверки подлинности в GitHub.com вместо GitHub AE.
-
Установите GitHub CLI, если еще не установили. Инструкции по установке см. в репозитории GitHub CLI.
-
Используйте подкоманду
auth loginдля проверки подлинности в GitHub CLI: Дополнительные сведения см. в документации поauth loginGitHub CLI.gh auth login -
Используйте подкоманду
apiдля выполнения запроса к API. Дополнительные сведения см. в документации поapiGitHub CLI.gh api repos/octocat/Spoon-Knife/issues
Использование GitHub CLI в GitHub Actions
Вы можете использовать GitHub CLI в рабочих процессах GitHub Actions. Дополнительные сведения см. в разделе Использование GitHub CLI в рабочих процессах.
Вместо того, чтобы использовать команду gh auth login, передайте маркер доступа в качестве переменной среды GH_TOKEN. GitHub рекомендует использовать встроенный GITHUB_TOKEN вместо создания маркера. Если это невозможно, сохраните маркер в качестве секрета и замените GITHUB_TOKEN в приведенном ниже примере именем секрета. Дополнительные сведения о GITHUB_TOKENсм. в разделе Автоматическая проверка подлинности токенов. Дополнительные сведения о секретах см. в разделе Зашифрованные секреты.
Примечание: Следующие примеры рабочих процессов предназначены для GitHub.com. Если вы предпочитаете использовать примеры с помощью GitHub AE, необходимо заменить octocat/Spoon-Knife репозиторием в GitHub AE.
on:
workflow_dispatch:
jobs:
use_api:
runs-on: ubuntu-latest
permissions:
issues: read
steps:
- env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh api repos/octocat/Spoon-Knife/issues
При проверке подлинности с помощью GitHub App можно создать маркер доступа к установке в рабочем процессе:
-
Храните идентификатор GitHub App как секрет. В следующем примере замените
APP_IDименем секрета. Идентификатор приложения можно найти на странице параметров приложения или через API. Дополнительные сведения см. в разделе Приложения GitHub в документации по REST API. Дополнительные сведения о секретах см. в разделе Зашифрованные секреты. -
Создайте закрытый ключ для приложения. Храните содержимое получившегося файла как секрет. (Сохраните все содержимое файла, включая
-----BEGIN RSA PRIVATE KEY-----и-----END RSA PRIVATE KEY-----.) В следующем примере заменитеAPP_PEMименем секрета. Дополнительные сведения см. в разделе Управление закрытыми ключами для приложений GitHub. -
Добавьте шаг для создания маркера и используйте его вместо
GITHUB_TOKEN. Обратите внимание, что срок действия этого маркера истекает через 60 минут. Пример:# Этот рабочий процесс использует действия, которые не сертифицированы GitHub. # Они предоставляются сторонним поставщиком, и на них распространяются # отдельные условия обслуживания, политика конфиденциальности и поддержка # документации. on: workflow_dispatch: jobs: track_pr: runs-on: ubuntu-latest steps: - name: Generate token id: generate_token uses: tibdex/github-app-token@c2055a00597a80f713b78b1650e8d3418f4d9a65 with: app_id: ${{ secrets.APP_ID }} private_key: ${{ secrets.APP_PEM }} - name: Use API env: GH_TOKEN: ${{ steps.generate_token.outputs.token }} run: | gh api repos/octocat/Spoon-Knife/issues
Начало работы с JavaScript
Вы можете использовать Octokit.js для взаимодействия с REST API GitHub в скриптах JavaScript. Дополнительные сведения см. в разделе Создание скриптов с помощью REST API и JavaScript.
Использование Octokit.js
Примечание: Следующий пример предназначен для GitHub.com. Если вы хотите попробовать пример с помощью GitHub AE, необходимо заменить octocat/Spoon-Knife репозиторием в GitHub AE. Кроме того, можно создать новый Octokit экземпляр без указания baseURL.
-
Создание маркера доступа Например, создайте маркер доступа пользователя personal access token или GitHub App. Дополнительные сведения см. в разделах Создание personal access tokenили Идентификация и авторизация пользователей для приложений GitHub.
Предупреждение. Считайте маркер доступа своим паролем.
Чтобы обеспечить безопасность маркера, вы можете хранить маркер в виде секрета и запустить скрипт с помощью GitHub Actions. Дополнительные сведения см. в разделе Использование Octokit.js в GitHub Actions.
Если эти варианты недоступны, рассмотрите возможность безопасного хранения маркера с помощью другой службы, например 1Password CLI.
-
Установить службы
octokit. Например,npm install octokit. Другие способы установки или загрузкиoctokitсм. в Octokit.js README. -
Импортируйте
octokitв скрипт. Например,import { Octokit } from "octokit";. Другие способы импортаoctokitсм. в Octokit.js README. -
Создайте экземпляр
Octokitс помощью маркера. ЗаменитеYOUR-TOKENсобственным маркером.const octokit = new Octokit({ auth: 'YOUR-TOKEN' }); -
Используйте
octokit.requestдля выполнения запроса. Отправьте метод HTTP и путь в качестве первого аргумента. Укажите любой путь, запрос и параметры текста в объекте в качестве второго аргумента. Например, в следующем запросе используется метод HTTPGET, путь —/repos/{owner}/{repo}/issuesи параметрыowner: "octocat"иrepo: "Spoon-Knife".await octokit.request("GET /repos/{owner}/{repo}/issues", { owner: "octocat", repo: "Spoon-Knife", });
Использование Octokit.js в GitHub Actions
Вы также можете выполнять скрипты JavaScript в рабочих процессах GitHub Actions. Дополнительные сведения см. в разделе Синтаксис рабочего процесса для GitHub Actions.
GitHub рекомендует использовать встроенный GITHUB_TOKEN вместо создания маркера. Если это невозможно, сохраните маркер в качестве секрета и замените GITHUB_TOKEN в приведенном ниже примере именем секрета. Дополнительные сведения о GITHUB_TOKENсм. в разделе Автоматическая проверка подлинности токенов. Дополнительные сведения о секретах см. в разделе Зашифрованные секреты.
Примечание: Следующий пример предназначен для GitHub.com. Если вы хотите попробовать пример с помощью GitHub AE, необходимо заменить octocat/Spoon-Knife репозиторием в GitHub AE. Кроме того, можно создать новый Octokit экземпляр без указания baseURL.
См. следующий пример рабочего процесса:
- Извлекает содержимое репозитория.
- Настраивает Node.js.
- Устанавливает
octokit. - Сохраняет значение
GITHUB_TOKENкак переменную средыTOKENи выполняет.github/actions-scripts/use-the-api.mjs, которые могут получить доступ к этой переменной среды в качествеprocess.env.TOKEN
Пример рабочего процесса:
on:
workflow_dispatch:
jobs:
use_api_via_script:
runs-on: ubuntu-latest
permissions:
issues: read
steps:
- name: Check out repo content
uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: '16.17.0'
cache: npm
- name: Install dependencies
run: npm install octokit
- name: Run script
run: |
node .github/actions-scripts/use-the-api.mjs
env:
TOKEN: ${{ secrets.GITHUB_TOKEN }}
Пример скрипта JavaScript с путем к файлу .github/actions-scripts/use-the-api.mjs:
import { Octokit } from "octokit"
const octokit = new Octokit({
auth: process.env.TOKEN
});
try {
const result = await octokit.request("GET /repos/{owner}/{repo}/issues", {
owner: "octocat",
repo: "Spoon-Knife",
});
const titleAndAuthor = result.data.map(issue => {title: issue.title, authorID: issue.user.id})
console.log(titleAndAuthor)
} catch (error) {
console.log(`Error! Status: ${error.status}. Message: ${error.response.data.message}`)
}
При проверке подлинности с помощью GitHub App можно создать маркер доступа к установке в рабочем процессе:
-
Храните идентификатор GitHub App как секрет. В следующем примере замените
APP_IDименем секрета. Идентификатор приложения можно найти на странице параметров приложения или через API приложений. Дополнительные сведения см. в разделе Приложения GitHub. Дополнительные сведения о секретах см. в разделе Зашифрованные секреты. -
Создайте закрытый ключ для приложения. Храните содержимое получившегося файла как секрет. (Сохраните все содержимое файла, включая
-----BEGIN RSA PRIVATE KEY-----и-----END RSA PRIVATE KEY-----.) В следующем примере заменитеAPP_PEMименем секрета. Дополнительные сведения см. в разделе Управление закрытыми ключами для приложений GitHub. -
Добавьте шаг для создания маркера и используйте его вместо
GITHUB_TOKEN. Обратите внимание, что срок действия этого маркера истекает через 60 минут. Например:# Этот рабочий процесс использует действия, которые не сертифицированы GitHub. # Они предоставляются сторонним поставщиком, и на них распространяются # отдельные условия обслуживания, политика конфиденциальности и поддержка # документации. on: workflow_dispatch: jobs: use_api_via_script: runs-on: ubuntu-latest steps: - name: Check out repo content uses: actions/checkout@v3 - name: Setup Node uses: actions/setup-node@v3 with: node-version: '16.17.0' cache: npm - name: Install dependencies run: npm install octokit - name: Generate token id: generate_token uses: tibdex/github-app-token@c2055a00597a80f713b78b1650e8d3418f4d9a65 with: app_id: ${{ secrets.APP_ID }} private_key: ${{ secrets.APP_PEM }} - name: Run script run: | node .github/actions-scripts/use-the-api.mjs env: TOKEN: ${{ steps.generate_token.outputs.token }}
Начало работы с использованием curl
Использование curl в командной строке
Примечания.
- Следующий пример предназначен для GitHub.com. Если вы предпочитаете попробовать пример с помощью GitHub AE, замените
https://api.github.comhttps://HOSTNAME/api/v3на , а заменитеHOSTNAMEименем узла для GitHub AE. Также необходимо заменитьoctocat/Spoon-Knifeрепозиторием в GitHub AE. - Если вы хотите выполнять запросы API из командной строки, GitHub рекомендует использовать GitHub CLI, что упрощает проверку подлинности и запросы. Дополнительные сведения о начале работы с REST API с помощью GitHub CLI см. в версии этой статьи для GitHub CLI.
-
Установите
curl, если он еще не установлен на компьютере. Чтобы проверка, еслиcurlустановлен, выполните командуcurl --versionв командной строке. Если выходные данные содержат сведения о версииcurl, она устанавливается. Если появится сообщение, похожее наcommand not found: curl, необходимо скачать и установитьcurl. Дополнительные сведения см. на странице скачивания проекта curl. -
Создание маркера доступа Например, создайте маркер доступа пользователя personal access token или GitHub App. Дополнительные сведения см. в разделах Создание personal access tokenили Идентификация и авторизация пользователей для приложений GitHub.
Предупреждение. Считайте маркер доступа своим паролем.
Вместо можно также использовать GitHub CLI .
curlGitHub CLI выполнит задачи по проверке подлинности. Дополнительные сведения см. в версии этой страницы для GitHub CLI.Если эти варианты недоступны, рассмотрите возможность безопасного хранения маркера с помощью другой службы, например 1Password CLI.
-
Используйте команду
curlдля выполнения запроса. Передайте маркер в заголовокAuthorization. ЗаменитеYOUR-TOKENсобственным маркером.curl --request GET \ --url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer YOUR-TOKEN"Примечание. В большинстве случаев передать маркер с помощью
Authorization: BearerилиAuthorization: token. Однако при передаче веб-токена JSON (JWT) необходимо использоватьAuthorization: Bearer.
Использование curl команд в GitHub Actions
Команды также можно использовать curl в рабочих процессах GitHub Actions.
GitHub рекомендует использовать встроенный GITHUB_TOKEN вместо создания маркера. Если это невозможно, сохраните маркер в качестве секрета и замените GITHUB_TOKEN в приведенном ниже примере именем секрета. Дополнительные сведения о GITHUB_TOKENсм. в разделе Автоматическая проверка подлинности токенов. Дополнительные сведения о секретах см. в разделе Зашифрованные секреты.
Примечание: Следующие примеры рабочих процессов предназначены для GitHub.com. Если вы предпочитаете попробовать примеры с помощью GitHub AE, обратите внимание на следующие различия.
- Необходимо заменить
https://api.github.comhttps://HOSTNAME/api/v3``HOSTNAMEименем узла для GitHub AE. - Необходимо заменить
octocat/Spoon-Knifeрепозиторием в GitHub AE.
on:
workflow_dispatch:
jobs:
use_api:
runs-on: ubuntu-latest
permissions:
issues: read
steps:
- env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
curl --request GET \
--url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer $GH_TOKEN"
При проверке подлинности с помощью GitHub App можно создать маркер доступа к установке в рабочем процессе:
-
Храните идентификатор GitHub App как секрет. В следующем примере замените
APP_IDименем секрета. Идентификатор приложения можно найти на странице параметров приложения или через API приложений. Дополнительные сведения см. в разделе Приложения GitHub. Дополнительные сведения о секретах см. в разделе Зашифрованные секреты. -
Создайте закрытый ключ для приложения. Храните содержимое получившегося файла как секрет. (Сохраните все содержимое файла, включая
-----BEGIN RSA PRIVATE KEY-----и-----END RSA PRIVATE KEY-----.) В следующем примере заменитеAPP_PEMименем секрета. Дополнительные сведения см. в разделе Управление закрытыми ключами для приложений GitHub. -
Добавьте шаг для создания маркера и используйте его вместо
GITHUB_TOKEN. Обратите внимание, что срок действия этого маркера истекает через 60 минут. Например:# Этот рабочий процесс использует действия, которые не сертифицированы GitHub. # Они предоставляются сторонним поставщиком, и на них распространяются # отдельные условия обслуживания, политика конфиденциальности и поддержка # документации. on: workflow_dispatch: jobs: use_api: runs-on: ubuntu-latest steps: - name: Generate token id: generate_token uses: tibdex/github-app-token@c2055a00597a80f713b78b1650e8d3418f4d9a65 with: app_id: ${{ secrets.APP_ID }} private_key: ${{ secrets.APP_PEM }} - name: Use API env: GH_TOKEN: ${{ steps.generate_token.outputs.token }} run: | curl --request GET \ --url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer $GH_TOKEN"
Дальнейшие действия
Дополнительные сведения см. в статье Начало работы с REST API.