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

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

## Введение

В этой статье описывается, как быстро начать работу GitHub с REST API с помощью GitHub CLI, `curl`или JavaScript. Более подробное руководство см. в разделе [Начало работы с REST API](/ru/rest/guides/getting-started-with-the-rest-api).

<div class="ghd-tool cli">

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

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

1. Установите GitHub CLI в macOS, Windows или Linux. Дополнительные сведения см. в разделе ["Установка](https://github.com/cli/cli?ref_product=cli\&ref_type=engagement\&ref_style=text#installation) " в репозитории GitHub CLI.

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

   ```shell
   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 CLI`api` подкоманды, за которой следует путь. Используйте флаг `--method` или `-X`, чтобы указать метод. Для получения дополнительной информации смотрите [GitHub CLI`api` документацию](https://cli.github.com/manual/gh_api).

   В этом примере выполняется запрос к конечной точке Get Octocat, которая использует метод `GET` и путь `/octocat`. Полную справочную документацию по этой конечной точке см. в разделе [Конечные точки REST API для метаданных](/ru/rest/meta/meta#get-octocat).

   ```shell copy
   gh api /octocat --method GET
   ```

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

Вы также можете использовать GitHub CLI это в своих GitHub Actions рабочих процессах. Дополнительные сведения см. в разделе [Использование GitHub CLI в рабочих процессах](/ru/actions/using-workflows/using-github-cli-in-workflows).

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

Вместо того, чтобы использовать команду `gh auth login`, передайте маркер доступа в качестве переменной среды `GH_TOKEN`.
GitHub Рекомендует использовать встроенный `GITHUB_TOKEN` токен, а не создавать токен. Если это невозможно, сохраните маркер в качестве секрета и замените `GITHUB_TOKEN` в приведенном ниже примере именем секрета. Дополнительные сведения см. в `GITHUB_TOKEN`разделе [Использование GITHUB\_TOKEN для проверки подлинности в рабочих процессах](/ru/actions/security-guides/automatic-token-authentication). Дополнительные сведения о секретах см. в разделе [Использование секретов в GitHub Actions](/ru/actions/security-guides/encrypted-secrets).

Следующий пример рабочего процесса использует конечную точку [List repository](/ru/rest/issues/issues#list-repository-issues) issues и запрашивает список проблем в `octocat/Spoon-Knife` репозиторий.

```yaml copy
on:
  workflow_dispatch:
jobs:
  use_api:
    runs-on: ubuntu-latest
    permissions:
      issues: read
    steps:
      - env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          gh api https://api.github.com/repos/octocat/Spoon-Knife/issues
```

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

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

1. Сохраняйте GitHub Appидентификатор клиента как конфигурационную переменную. В следующем примере замените `APP_CLIENT_ID` имя переменной конфигурации. Вы можете найти идентификатор клиента на странице настроек вашего приложения или через API. Дополнительные сведения см. в разделе [Конечные точки REST API для GitHub Apps](/ru/rest/apps/apps#get-an-app). Дополнительные сведения о переменных конфигурации см. в разделе [Хранение сведений в переменных](/ru/actions/learn-github-actions/variables#defining-configuration-variables-for-multiple-workflows).
2. Создайте закрытый ключ для приложения. Храните содержимое получившегося файла как секрет. (Сохраните все содержимое файла, включая `-----BEGIN RSA PRIVATE KEY-----` и `-----END RSA PRIVATE KEY-----`.) В следующем примере замените `APP_PRIVATE_KEY` именем секрета. Дополнительные сведения см. в разделе [Управление приватными ключами для приложений GitHub](/ru/apps/creating-github-apps/authenticating-with-a-github-app/managing-private-keys-for-github-apps). Дополнительные сведения о секретах см. в разделе [Использование секретов в GitHub Actions](/ru/actions/security-guides/encrypted-secrets).
3. Добавьте шаг для создания маркера и используйте его вместо `GITHUB_TOKEN`. Обратите внимание, что срок действия этого маркера истекает через 60 минут.
   Например:

   ```yaml copy
   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 https://api.github.com/repos/octocat/Spoon-Knife/issues
   ```

</div>

<div class="ghd-tool javascript">

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

Вы можете использовать Octokit.js для взаимодействия с GitHub REST API в ваших JavaScript-скриптах. Дополнительные сведения см. в разделе ["Скрипты" с помощью REST API и JavaScript](/ru/rest/guides/scripting-with-the-rest-api-and-javascript).

1. Создание маркера доступа Например, создать personal access token или GitHub App пользовательский токен доступа. Этот маркер будет использоваться для проверки подлинности запроса, поэтому вы должны предоставить ему любые области или разрешения, необходимые для доступа к этой конечной точке. Для получения дополнительной информации см. [Проверка подлинности в REST API](/ru/rest/overview/authenticating-to-the-rest-api) или [Идентификация и авторизация пользователей для GitHub приложений](/ru/developers/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps).

   > \[!WARNING]
   > Обратитесь к маркеру доступа как к паролю.
   >
   > Чтобы сохранить свой токен в безопасности, вы можете хранить его в секрете и запускать скрипт через GitHub Actions. Для получения дополнительной информации смотрите раздел [«Использование Octokit.js».GitHub Actions](#using-octokitjs-in-github-actions)

   Вы также можете хранить свой токен в Codespaces секрете и запускать скрипт в Codespaces. Дополнительные сведения см. в разделе ["Управление зашифрованными секретами](/ru/codespaces/managing-your-codespaces/managing-encrypted-secrets-for-your-codespaces) для пространств кода".

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

2. Установите `octokit`. Например: `npm install octokit`. Другие способы установки или загрузки `octokit` см. в [Octokit.js README](https://github.com/octokit/octokit.js/#readme).

3. Импортируйте `octokit` в скрипт. Например: `import { Octokit } from "octokit";`. Другие способы импорта `octokit` см. в [Octokit.js README](https://github.com/octokit/octokit.js/#readme).

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

   ```javascript copy
   const octokit = new Octokit({ 
     auth: 'YOUR-TOKEN'
   });
   ```

5. Используйте `octokit.request` для выполнения запроса. Отправьте метод HTTP и путь в качестве первого аргумента. Укажите любой путь, запрос и параметры текста в объекте в качестве второго аргумента. Дополнительные сведения о параметрах см. в разделе [Начало работы с REST API](/ru/rest/guides/getting-started-with-the-rest-api#using-parameters).

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

   ```javascript copy
   await octokit.request("GET /repos/{owner}/{repo}/issues", {
     owner: "octocat",
     repo: "Spoon-Knife",
   });
   ```

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

Вы также можете запускать скрипты JavaScript в рабочих GitHub Actions процессах. Дополнительные сведения см. в разделе [Синтаксис рабочего процесса для GitHub Actions](/ru/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun).

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

GitHub Рекомендует использовать встроенный `GITHUB_TOKEN` токен, а не создавать токен. Если это невозможно, сохраните маркер в качестве секрета и замените `GITHUB_TOKEN` в приведенном ниже примере именем секрета. Дополнительные сведения см. в `GITHUB_TOKEN`разделе [Использование GITHUB\_TOKEN для проверки подлинности в рабочих процессах](/ru/actions/security-guides/automatic-token-authentication). Дополнительные сведения о секретах см. в разделе [Использование секретов в GitHub Actions](/ru/actions/security-guides/encrypted-secrets).

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

1. Извлекает содержимое репозитория.
2. Настраивает Node.js.
3. Устанавливает `octokit`.
4. Сохраняет значение `GITHUB_TOKEN` как переменную среды `TOKEN` и выполняет `.github/actions-scripts/use-the-api.mjs`, которые могут получить доступ к этой переменной среды в качестве `process.env.TOKEN`

```yaml
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`к файлу .

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

1. Сохраняйте GitHub Appидентификатор клиента как конфигурационную переменную. В следующем примере замените `APP_CLIENT_ID` имя переменной конфигурации. Вы можете найти идентификатор клиента на странице настроек вашего приложения или через API приложения. Дополнительные сведения см. в разделе [Конечные точки REST API для GitHub Apps](/ru/rest/apps/apps#get-an-app). Дополнительные сведения о переменных конфигурации см. в разделе [Хранение сведений в переменных](/ru/actions/learn-github-actions/variables#defining-configuration-variables-for-multiple-workflows).
2. Создайте закрытый ключ для приложения. Храните содержимое получившегося файла как секрет. (Сохраните все содержимое файла, включая `-----BEGIN RSA PRIVATE KEY-----` и `-----END RSA PRIVATE KEY-----`.) В следующем примере замените `APP_PRIVATE_KEY` именем секрета. Дополнительные сведения см. в разделе [Управление приватными ключами для приложений GitHub](/ru/apps/creating-github-apps/authenticating-with-a-github-app/managing-private-keys-for-github-apps). Дополнительные сведения о секретах см. в разделе [Использование секретов в GitHub Actions](/ru/actions/security-guides/encrypted-secrets).
3. Добавьте шаг для создания маркера и используйте его вместо `GITHUB_TOKEN`. Обратите внимание, что срок действия этого маркера истекает через 60 минут. Например:

   ```yaml
   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 }}

   ```

</div>

<div class="ghd-tool curl">

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

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

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

2. Создание маркера доступа Например, создать personal access token или GitHub App пользовательский токен доступа. Этот маркер будет использоваться для проверки подлинности запроса, поэтому вы должны предоставить ему любые области или разрешения, необходимые для доступа к конечной точке. Дополнительные сведения см. в разделе [Проверка подлинности в REST API](/ru/rest/overview/authenticating-to-the-rest-api).

   > \[!WARNING]
   > Обратитесь к маркеру доступа как к паролю.
   >
   > Чтобы сохранить свой токен в безопасности, вы можете хранить его в Codespaces секрете и использовать командную строку через Codespaces. Дополнительные сведения см. в разделе ["Управление зашифрованными секретами](/ru/codespaces/managing-your-codespaces/managing-encrypted-secrets-for-your-codespaces) для пространств кода".

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

3. Используйте команду `curl` для выполнения запроса. Передайте свой жетон в `Authorization` заголовке. Замените `YOUR-TOKEN` маркером.

   ```shell copy
   curl --request GET \
   --url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
   --header "Accept: application/vnd.github+json" \
   --header "Authorization: Bearer YOUR-TOKEN"
   ```

   > \[!NOTE]
   > В большинстве случаев передать маркер с помощью `Authorization: Bearer` или `Authorization: token`. Однако при передаче веб-токена JSON (JWT) необходимо использовать `Authorization: Bearer`.

## Использование `curl` команд в GitHub Actions

Вы также можете использовать `curl` команды в своих GitHub Actions рабочих процессах.

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

GitHub Рекомендует использовать встроенный `GITHUB_TOKEN` токен, а не создавать токен. Если это невозможно, сохраните маркер в качестве секрета и замените `GITHUB_TOKEN` в приведенном ниже примере именем секрета. Дополнительные сведения см. в `GITHUB_TOKEN`разделе [Использование GITHUB\_TOKEN для проверки подлинности в рабочих процессах](/ru/actions/security-guides/automatic-token-authentication). Дополнительные сведения о секретах см. в разделе [Использование секретов в GitHub Actions](/ru/actions/security-guides/encrypted-secrets).

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

1. Сохраняйте GitHub Appидентификатор клиента как конфигурационную переменную. В следующем примере замените `APP_CLIENT_ID` имя переменной конфигурации. Вы можете найти идентификатор клиента на странице настроек вашего приложения или через API приложения. Дополнительные сведения см. в разделе [Конечные точки REST API для GitHub Apps](/ru/rest/apps/apps#get-an-app). Дополнительные сведения о переменных конфигурации см. в разделе [Хранение сведений в переменных](/ru/actions/learn-github-actions/variables#defining-configuration-variables-for-multiple-workflows).
2. Создайте закрытый ключ для приложения. Храните содержимое получившегося файла как секрет. (Сохраните все содержимое файла, включая `-----BEGIN RSA PRIVATE KEY-----` и `-----END RSA PRIVATE KEY-----`.) В следующем примере замените `APP_PRIVATE_KEY` именем секрета. Дополнительные сведения см. в разделе [Управление приватными ключами для приложений GitHub](/ru/apps/creating-github-apps/authenticating-with-a-github-app/managing-private-keys-for-github-apps). Дополнительные сведения о хранении секретов см. в разделе [Использование секретов в GitHub Actions](/ru/actions/security-guides/encrypted-secrets).
3. Добавьте шаг для создания маркера и используйте его вместо `GITHUB_TOKEN`. Обратите внимание, что срок действия этого маркера истекает через 60 минут.
   Например:

   ```yaml copy
   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 "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
             --header "Accept: application/vnd.github+json" \
             --header "Authorization: Bearer $GH_TOKEN"

   ```

</div>

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

Дополнительные сведения см. в руководстве [по началу работы с REST API](/ru/rest/guides/getting-started-with-the-rest-api).