Skip to main content

Быстрый старт для GitHub REST API

Узнайте, как начать работу с GitHub REST API.

Введение

В этой статье описывается, как быстро начать работу GitHub с REST API с помощью GitHub CLI, curlили JavaScript. Более подробное руководство см. в разделе Начало работы с REST API.

Использование GitHub CLI в командной строке

GitHub CLI это самый простой способ использовать GitHub REST API из командной строки.

  1. Установите GitHub CLI в macOS, Windows или Linux. Дополнительные сведения см. в разделе "Установка " в репозитории GitHub CLI.

  2. Чтобы выполнить проверку подлинности в GitHub, выполните следующую команду из терминала.

    gh auth login
    
  3. Выберите место для проверки подлинности:

    • Если вы обращаетесь к GitHub по адресу GitHub.com, выберите GitHub.com.
    • Если вы обращаетесь к GitHub в другом домене, выберите "Другой", а затем введите имя узла (например: octocorp.ghe.com).
  4. Следуйте остальным запросам на экране.

    GitHub CLI автоматически сохраняет учетные данные Git при выборе HTTPS в качестве предпочтительного протокола для операций Git и ответить "да" запросу на запрос, хотите ли пройти проверку подлинности в Git с помощью учетных данных GitHub учетных данных. Это может быть полезно, так как это позволяет использовать такие команды Git, как git push и git pull без необходимости настраивать отдельный диспетчер учетных данных или использовать SSH.

  5. Сделайте запрос с помощью GitHub CLIapi подкоманды, за которой следует путь. Используйте флаг --method или -X, чтобы указать метод. Для получения дополнительной информации смотрите GitHub CLIapi документацию.

    В этом примере выполняется запрос к конечной точке Get Octocat, которая использует метод GET и путь /octocat. Полную справочную документацию по этой конечной точке см. в разделе Конечные точки REST API для метаданных.

    Shell
    gh api /octocat --method GET
    

Использование GitHub CLI в GitHub Actions

Вы также можете использовать GitHub CLI это в своих GitHub Actions рабочих процессах. Дополнительные сведения см. в разделе Использование GitHub CLI в рабочих процессах.

Проверка подлинности с помощью маркера доступа

Вместо того, чтобы использовать команду gh auth login, передайте маркер доступа в качестве переменной среды GH_TOKEN. GitHub Рекомендует использовать встроенный GITHUB_TOKEN токен, а не создавать токен. Если это невозможно, сохраните маркер в качестве секрета и замените GITHUB_TOKEN в приведенном ниже примере именем секрета. Дополнительные сведения см. в GITHUB_TOKENразделе Использование GITHUB_TOKEN для проверки подлинности в рабочих процессах. Дополнительные сведения о секретах см. в разделе Использование секретов в GitHub Actions.

Следующий пример рабочего процесса использует конечную точку List repository issues и запрашивает список проблем в репозитории, который вы указываете. Замените HOSTNAME на имя ваш экземпляр GitHub Enterprise Server. Замените REPO-OWNER именем учетной записи, владеющей репозиторием. Замените REPO-NAME на название репозитория.

YAML
on:
  workflow_dispatch:
jobs:
  use_api:
    runs-on: ubuntu-latest
    permissions:
      issues: read
    steps:
      - env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          gh api http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues

Аутентификация с помощью GitHub App

Если вы аутентифицируете с GitHub Appпомощью , вы можете создать токен доступа для установки в вашем рабочем процессе:

  1. Сохраняйте GitHub Appидентификатор клиента как конфигурационную переменную. В следующем примере замените APP_CLIENT_ID имя переменной конфигурации. Вы можете найти идентификатор клиента на странице настроек вашего приложения или через API. Дополнительные сведения см. в разделе Конечные точки REST API для GitHub Apps. Дополнительные сведения о переменных конфигурации см. в разделе Хранение сведений в переменных.

  2. Создайте закрытый ключ для приложения. Храните содержимое получившегося файла как секрет. (Сохраните все содержимое файла, включая -----BEGIN RSA PRIVATE KEY----- и -----END RSA PRIVATE KEY-----.) В следующем примере замените APP_PRIVATE_KEY именем секрета. Дополнительные сведения см. в разделе Управление приватными ключами для приложений GitHub. Дополнительные сведения о секретах см. в разделе Использование секретов в GitHub Actions.

  3. Добавьте шаг для создания маркера и используйте его вместо GITHUB_TOKEN. Обратите внимание, что срок действия этого маркера истекает через 60 минут. В следующем примере замените HOSTNAME на имя ваш экземпляр GitHub Enterprise Server. Замените REPO-OWNER именем учетной записи, владеющей репозиторием. Замените REPO-NAME на название репозитория.

    YAML
    on:
      workflow_dispatch:
    jobs:
      track_pr:
        runs-on: ubuntu-latest
        steps:
          - name: Generate token
            id: generate-token
            uses: actions/create-github-app-token@v3
            with:
              client-id: ${{ vars.APP_CLIENT_ID }}
              private-key: ${{ secrets.APP_PRIVATE_KEY }}
          - name: Use API
            env:
              GH_TOKEN: ${{ steps.generate-token.outputs.token }}
            run: |
              gh api http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues
    

Использование Octokit.js

Вы можете использовать Octokit.js для взаимодействия с GitHub REST API в ваших JavaScript-скриптах. Дополнительные сведения см. в разделе "Скрипты" с помощью REST API и JavaScript.

  1. Создание маркера доступа Например, создать personal access token или GitHub App пользовательский токен доступа. Этот маркер будет использоваться для проверки подлинности запроса, поэтому вы должны предоставить ему любые области или разрешения, необходимые для доступа к этой конечной точке. Для получения дополнительной информации см. Проверка подлинности в REST API или Идентификация и авторизация пользователей для GitHub приложений.

    Предупреждение

    Обратитесь к маркеру доступа как к паролю.

    Чтобы сохранить свой токен в безопасности, вы можете хранить его в секрете и запускать скрипт через GitHub Actions. Для получения дополнительной информации смотрите раздел «Использование Octokit.js».GitHub Actions

    Если эти параметры недоступны, попробуйте использовать другую службу CLI для безопасного хранения маркера.

  2. Установите octokit. Например: npm install octokit. Другие способы установки или загрузки octokit см. в Octokit.js README.

  3. Импортируйте octokit в скрипт. Например: import { Octokit } from "octokit";. Другие способы импорта octokit см. в Octokit.js README.

  4. Создайте экземпляр Octokit с помощью вашего токена. Замените HOSTNAME на имя ваш экземпляр GitHub Enterprise Server. Замените YOUR-TOKEN маркером.

    JavaScript
    const octokit = new Octokit({ 
      baseUrl: "http(s)://HOSTNAME/api/v3",
      auth: 'YOUR-TOKEN'
    });
    
  5. Используйте octokit.request для выполнения запроса. Отправьте метод HTTP и путь в качестве первого аргумента. Укажите любой путь, запрос и параметры текста в объекте в качестве второго аргумента. Дополнительные сведения о параметрах см. в разделе Начало работы с REST API.

    Например, в следующем запросе HTTP-метод — , GETпуть — /repos/{owner}/{repo}/issues, а параметры —owner: "REPO-OWNER"и Замените REPO-OWNER на название аккаунта, владеющего репозиторием, и REPO-NAME на название репозитория.

    JavaScript
    await octokit.request("GET /repos/{owner}/{repo}/issues", {
      owner: "REPO-OWNER",
      repo: "REPO-NAME",
    });
    

Использование Octokit.js в GitHub Actions

Вы также можете запускать скрипты JavaScript в рабочих GitHub Actions процессах. Дополнительные сведения см. в разделе Синтаксис рабочего процесса для GitHub Actions.

Проверка подлинности с помощью маркера доступа

GitHub Рекомендует использовать встроенный GITHUB_TOKEN токен, а не создавать токен. Если это невозможно, сохраните маркер в качестве секрета и замените GITHUB_TOKEN в приведенном ниже примере именем секрета. Дополнительные сведения см. в GITHUB_TOKENразделе Использование GITHUB_TOKEN для проверки подлинности в рабочих процессах. Дополнительные сведения о секретах см. в разделе Использование секретов в GitHub Actions.

См. следующий пример рабочего процесса:

  1. Извлекает содержимое репозитория.
  2. Настраивает Node.js.
  3. Устанавливает octokit.
  4. Сохраняет значение 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@v6

      - name: Setup Node
        uses: actions/setup-node@v4
        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к файлу . Замените HOSTNAME на имя ваш экземпляр GitHub Enterprise Server. Замените REPO-OWNER именем учетной записи, владеющей репозиторием. Замените REPO-NAME на название репозитория.

import { Octokit } from "octokit"

const octokit = new Octokit({ 
  baseUrl: "http(s)://HOSTNAME/api/v3",
  auth: process.env.TOKEN
});

try {
  const result = await octokit.request("GET /repos/{owner}/{repo}/issues", {
      owner: "REPO-OWNER",
      repo: "REPO-NAME",
    });

  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помощью , вы можете создать токен доступа для установки в вашем рабочем процессе:

  1. Сохраняйте GitHub Appидентификатор клиента как конфигурационную переменную. В следующем примере замените APP_CLIENT_ID имя переменной конфигурации. Вы можете найти идентификатор клиента на странице настроек вашего приложения или через API приложения. Дополнительные сведения см. в разделе Конечные точки REST API для GitHub Apps. Дополнительные сведения о переменных конфигурации см. в разделе Хранение сведений в переменных.

  2. Создайте закрытый ключ для приложения. Храните содержимое получившегося файла как секрет. (Сохраните все содержимое файла, включая -----BEGIN RSA PRIVATE KEY----- и -----END RSA PRIVATE KEY-----.) В следующем примере замените APP_PRIVATE_KEY именем секрета. Дополнительные сведения см. в разделе Управление приватными ключами для приложений GitHub. Дополнительные сведения о секретах см. в разделе Использование секретов в GitHub Actions.

  3. Добавьте шаг для создания маркера и используйте его вместо GITHUB_TOKEN. Обратите внимание, что срок действия этого маркера истекает через 60 минут. Например:

    on:
      workflow_dispatch:
    jobs:
      use_api_via_script:
        runs-on: ubuntu-latest
        steps:
          - name: Check out repo content
            uses: actions/checkout@v6
    
          - name: Setup Node
            uses: actions/setup-node@v4
            with:
              node-version: '16.17.0'
              cache: npm
    
          - name: Install dependencies
            run: npm install octokit
    
          - name: Generate token
            id: generate-token
            uses: actions/create-github-app-token@v3
            with:
              client-id: ${{ vars.APP_CLIENT_ID }}
              private-key: ${{ secrets.APP_PRIVATE_KEY }}
    
          - name: Run script
            run: |
              node .github/actions-scripts/use-the-api.mjs
            env:
              TOKEN: ${{ steps.generate-token.outputs.token }}
    
    

Использование curl в командной строке

Примечание.

Если вы хотите делать API-запросы из командной строки, GitHub рекомендую использовать GitHub CLI, что упрощает аутентификацию и запросы. Для получения дополнительной информации о начале работы с REST API GitHub CLIс помощью , смотрите GitHub CLI версию этой статьи.

  1. Установите, curl если он еще не установлен на компьютере. Чтобы проверить, установлен ли curl он, выполните команду curl --version в командной строке. Если выходные данные содержат сведения о версии curl, то это означает curl , что устанавливается. Если вы получите сообщение, аналогичное command not found: curl, необходимо скачать и установить curl. Дополнительные сведения см . на странице скачивания проекта Curl.

  2. Создание маркера доступа Например, создать personal access token или GitHub App пользовательский токен доступа. Этот маркер будет использоваться для проверки подлинности запроса, поэтому вы должны предоставить ему любые области или разрешения, необходимые для доступа к конечной точке. Дополнительные сведения см. в разделе Проверка подлинности в REST API.

    Предупреждение

    Обратитесь к маркеру доступа как к паролю.

    Кроме того, вместо GitHub CLIэтого можно использоватьcurl. GitHub CLI позаботится о аутентификации за вас. Для получения дополнительной информации смотрите GitHub CLI версию этой страницы.

    Если эти параметры недоступны, попробуйте использовать другую службу CLI для безопасного хранения маркера.

  3. Используйте команду curl для выполнения запроса. Передайте свой жетон в Authorization заголовке. Замените HOSTNAME на имя ваш экземпляр GitHub Enterprise Server. Замените REPO-OWNER именем учетной записи, владеющей репозиторием. Замените REPO-NAME на название репозитория. Замените YOUR-TOKEN маркером.

    Shell
    curl --request GET \
    --url "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/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_TOKEN для проверки подлинности в рабочих процессах. Дополнительные сведения о секретах см. в разделе Использование секретов в GitHub Actions.

В следующем примере заменим HOSTNAME на имя ваш экземпляр GitHub Enterprise Server. Замените REPO-OWNER именем учетной записи, владеющей репозиторием. Замените REPO-NAME на название репозитория.

YAML
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 "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \
          --header "Accept: application/vnd.github+json" \
          --header "Authorization: Bearer $GH_TOKEN"

Аутентификация с помощью GitHub App

Если вы аутентифицируете с GitHub Appпомощью , вы можете создать токен доступа для установки в вашем рабочем процессе:

  1. Сохраняйте GitHub Appидентификатор клиента как конфигурационную переменную. В следующем примере замените APP_CLIENT_ID имя переменной конфигурации. Вы можете найти идентификатор клиента на странице настроек вашего приложения или через API приложения. Дополнительные сведения см. в разделе Конечные точки REST API для GitHub Apps. Дополнительные сведения о переменных конфигурации см. в разделе Хранение сведений в переменных.

  2. Создайте закрытый ключ для приложения. Храните содержимое получившегося файла как секрет. (Сохраните все содержимое файла, включая -----BEGIN RSA PRIVATE KEY----- и -----END RSA PRIVATE KEY-----.) В следующем примере замените APP_PRIVATE_KEY именем секрета. Дополнительные сведения см. в разделе Управление приватными ключами для приложений GitHub. Дополнительные сведения о хранении секретов см. в разделе Использование секретов в GitHub Actions.

  3. Добавьте шаг для создания маркера и используйте его вместо GITHUB_TOKEN. Обратите внимание, что срок действия этого маркера истекает через 60 минут. В следующем примере замените HOSTNAME на имя ваш экземпляр GitHub Enterprise Server. Замените REPO-OWNER именем учетной записи, владеющей репозиторием. Замените REPO-NAME на название репозитория.

    YAML
    on:
      workflow_dispatch:
    jobs:
      use_api:
        runs-on: ubuntu-latest
        steps:
          - name: Generate token
            id: generate-token
            uses: actions/create-github-app-token@v3
            with:
              client-id: ${{ vars.APP_CLIENT_ID }}
              private-key: ${{ secrets.APP_PRIVATE_KEY }}
    
          - name: Use API
            env:
              GH_TOKEN: ${{ steps.generate-token.outputs.token }}
            run: |
              curl --request GET \
              --url "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \
              --header "Accept: application/vnd.github+json" \
              --header "Authorization: Bearer $GH_TOKEN"
    
    

Следующие шаги

Дополнительные сведения см. в руководстве по началу работы с REST API.