{"meta":{"title":"Быстрый старт для GitHub REST API","intro":"Узнайте, как начать работу с GitHub REST API.","product":"REST API","breadcrumbs":[{"href":"/ru/rest","title":"REST API"},{"href":"/ru/rest/quickstart","title":"Быстрое начало"}],"documentType":"article"},"body":"# Быстрый старт для GitHub REST API\n\nУзнайте, как начать работу с GitHub REST API.\n\n## Введение\n\nВ этой статье описывается, как быстро начать работу GitHub с REST API с помощью GitHub CLI, `curl`или JavaScript. Более подробное руководство см. в разделе [Начало работы с REST API](/ru/rest/using-the-rest-api/getting-started-with-the-rest-api).\n\n<div class=\"ghd-tool cli\">\n\n## Использование GitHub CLI в командной строке\n\nGitHub CLI это самый простой способ использовать GitHub REST API из командной строки.\n\n1. Установите GitHub CLI в macOS, Windows или Linux. Дополнительные сведения см. в разделе [\"Установка](https://github.com/cli/cli?ref_product=cli\\&ref_type=engagement\\&ref_style=text#installation) \" в репозитории GitHub CLI.\n\n2. Чтобы выполнить проверку подлинности в GitHub, выполните следующую команду из терминала.\n\n   ```shell\n   gh auth login\n   ```\n\n3. Выберите место для проверки подлинности:\n\n   * Если вы обращаетесь к GitHub по адресу GitHub.com, выберите **GitHub.com**.\n   * Если вы обращаетесь к GitHub в другом домене, выберите **\"Другой**\", а затем введите имя узла (например: `octocorp.ghe.com`).\n\n4. Следуйте остальным запросам на экране.\n\n   GitHub CLI автоматически сохраняет учетные данные Git при выборе HTTPS в качестве предпочтительного протокола для операций Git и ответить \"да\" запросу на запрос, хотите ли пройти проверку подлинности в Git с помощью учетных данных GitHub учетных данных. Это может быть полезно, так как это позволяет использовать такие команды Git, как `git push` и `git pull` без необходимости настраивать отдельный диспетчер учетных данных или использовать SSH.\n\n5. Сделайте запрос с помощью GitHub CLI`api` подкоманды, за которой следует путь. Используйте флаг `--method` или `-X`, чтобы указать метод. Для получения дополнительной информации смотрите [GitHub CLI`api` документацию](https://cli.github.com/manual/gh_api).\n\n   В этом примере выполняется запрос к конечной точке Get Octocat, которая использует метод `GET` и путь `/octocat`. Полную справочную документацию по этой конечной точке см. в разделе [Конечные точки REST API для метаданных](/ru/rest/meta/meta#get-octocat).\n\n   ```shell copy\n   gh api /octocat --method GET\n   ```\n\n## Использование GitHub CLI в GitHub Actions\n\nВы также можете использовать GitHub CLI это в своих GitHub Actions рабочих процессах. Дополнительные сведения см. в разделе [Использование GitHub CLI в рабочих процессах](/ru/actions/how-tos/write-workflows/choose-what-workflows-do/use-github-cli).\n\n### Проверка подлинности с помощью маркера доступа\n\nВместо того, чтобы использовать команду `gh auth login`, передайте маркер доступа в качестве переменной среды `GH_TOKEN`.\nGitHub Рекомендует использовать встроенный `GITHUB_TOKEN` токен, а не создавать токен. Если это невозможно, сохраните маркер в качестве секрета и замените `GITHUB_TOKEN` в приведенном ниже примере именем секрета. Дополнительные сведения см. в `GITHUB_TOKEN`разделе [Использование GITHUB\\_TOKEN для проверки подлинности в рабочих процессах](/ru/actions/tutorials/authenticate-with-github_token). Дополнительные сведения о секретах см. в разделе [Использование секретов в GitHub Actions](/ru/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets).\n\nСледующий пример рабочего процесса использует конечную точку [List repository](/ru/rest/issues/issues#list-repository-issues) issues и запрашивает список проблем в `octocat/Spoon-Knife` репозиторий.\n\n```yaml copy\non:\n  workflow_dispatch:\njobs:\n  use_api:\n    runs-on: ubuntu-latest\n    permissions:\n      issues: read\n    steps:\n      - env:\n          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        run: |\n          gh api https://api.github.com/repos/octocat/Spoon-Knife/issues\n```\n\n### Аутентификация с помощью GitHub App\n\nЕсли вы аутентифицируете с GitHub Appпомощью , вы можете создать токен доступа для установки в вашем рабочем процессе:\n\n1. Сохраняйте GitHub Appидентификатор клиента как конфигурационную переменную. В следующем примере замените `APP_CLIENT_ID` имя переменной конфигурации. Вы можете найти идентификатор клиента на странице настроек вашего приложения или через API. Дополнительные сведения см. в разделе [Конечные точки REST API для GitHub Apps](/ru/rest/apps/apps#get-an-app). Дополнительные сведения о переменных конфигурации см. в разделе [Хранение сведений в переменных](/ru/actions/how-tos/write-workflows/choose-what-workflows-do/use-variables#defining-configuration-variables-for-multiple-workflows).\n2. Создайте закрытый ключ для приложения. Храните содержимое получившегося файла как секрет. (Сохраните все содержимое файла, включая `-----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/how-tos/write-workflows/choose-what-workflows-do/use-secrets).\n3. Добавьте шаг для создания маркера и используйте его вместо `GITHUB_TOKEN`. Обратите внимание, что срок действия этого маркера истекает через 60 минут.\n   Например:\n\n   ```yaml copy\n   on:\n     workflow_dispatch:\n   jobs:\n     track_pr:\n       runs-on: ubuntu-latest\n       steps:\n         - name: Generate token\n           id: generate-token\n           uses: actions/create-github-app-token@v3\n           with:\n             client-id: ${{ vars.APP_CLIENT_ID }}\n             private-key: ${{ secrets.APP_PRIVATE_KEY }}\n         - name: Use API\n           env:\n             GH_TOKEN: ${{ steps.generate-token.outputs.token }}\n           run: |\n             gh api https://api.github.com/repos/octocat/Spoon-Knife/issues\n   ```\n\n</div>\n\n<div class=\"ghd-tool javascript\">\n\n## Использование Octokit.js\n\nВы можете использовать Octokit.js для взаимодействия с GitHub REST API в ваших JavaScript-скриптах. Дополнительные сведения см. в разделе [\"Скрипты\" с помощью REST API и JavaScript](/ru/rest/guides/scripting-with-the-rest-api-and-javascript).\n\n1. Создание маркера доступа Например, создать personal access token или GitHub App пользовательский токен доступа. Этот маркер будет использоваться для проверки подлинности запроса, поэтому вы должны предоставить ему любые области или разрешения, необходимые для доступа к этой конечной точке. Для получения дополнительной информации см. [Проверка подлинности в REST API](/ru/rest/authentication/authenticating-to-the-rest-api) или [Идентификация и авторизация пользователей для GitHub приложений](/ru/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-with-a-github-app-on-behalf-of-a-user).\n\n   > \\[!WARNING]\n   > Обратитесь к маркеру доступа как к паролю.\n   >\n   > Чтобы сохранить свой токен в безопасности, вы можете хранить его в секрете и запускать скрипт через GitHub Actions. Для получения дополнительной информации смотрите раздел [«Использование Octokit.js».GitHub Actions](#using-octokitjs-in-github-actions)\n\n   Вы также можете хранить свой токен в Codespaces секрете и запускать скрипт в Codespaces. Дополнительные сведения см. в разделе [\"Управление зашифрованными секретами](/ru/codespaces/managing-your-codespaces/managing-your-account-specific-secrets-for-github-codespaces) для пространств кода\".\n\n   > Если эти параметры недоступны, попробуйте использовать другую службу CLI для безопасного хранения маркера.\n\n2. Установите `octokit`. Например: `npm install octokit`. Другие способы установки или загрузки `octokit` см. в [Octokit.js README](https://github.com/octokit/octokit.js/#readme).\n\n3. Импортируйте `octokit` в скрипт. Например: `import { Octokit } from \"octokit\";`. Другие способы импорта `octokit` см. в [Octokit.js README](https://github.com/octokit/octokit.js/#readme).\n\n4. Создайте экземпляр `Octokit` с помощью вашего токена. Замените `YOUR-TOKEN` маркером.\n\n   ```javascript copy\n   const octokit = new Octokit({ \n     auth: 'YOUR-TOKEN'\n   });\n   ```\n\n5. Используйте `octokit.request` для выполнения запроса. Отправьте метод HTTP и путь в качестве первого аргумента. Укажите любой путь, запрос и параметры текста в объекте в качестве второго аргумента. Дополнительные сведения о параметрах см. в разделе [Начало работы с REST API](/ru/rest/using-the-rest-api/getting-started-with-the-rest-api#parameters).\n\n   Например, в следующем запросе HTTP-метод — , `GET`путь — `/repos/{owner}/{repo}/issues`, а параметры —`owner: \"octocat\"`и .`repo: \"Spoon-Knife\"`\n\n   ```javascript copy\n   await octokit.request(\"GET /repos/{owner}/{repo}/issues\", {\n     owner: \"octocat\",\n     repo: \"Spoon-Knife\",\n   });\n   ```\n\n## Использование Octokit.js в GitHub Actions\n\nВы также можете запускать скрипты JavaScript в рабочих GitHub Actions процессах. Дополнительные сведения см. в разделе [Синтаксис рабочего процесса для GitHub Actions](/ru/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsrun).\n\n### Проверка подлинности с помощью маркера доступа\n\nGitHub Рекомендует использовать встроенный `GITHUB_TOKEN` токен, а не создавать токен. Если это невозможно, сохраните маркер в качестве секрета и замените `GITHUB_TOKEN` в приведенном ниже примере именем секрета. Дополнительные сведения см. в `GITHUB_TOKEN`разделе [Использование GITHUB\\_TOKEN для проверки подлинности в рабочих процессах](/ru/actions/tutorials/authenticate-with-github_token). Дополнительные сведения о секретах см. в разделе [Использование секретов в GitHub Actions](/ru/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets).\n\nСм. следующий пример рабочего процесса:\n\n1. Извлекает содержимое репозитория.\n2. Настраивает Node.js.\n3. Устанавливает `octokit`.\n4. Сохраняет значение `GITHUB_TOKEN` как переменную среды `TOKEN` и выполняет `.github/actions-scripts/use-the-api.mjs`, которые могут получить доступ к этой переменной среды в качестве `process.env.TOKEN`\n\n```yaml\non:\n  workflow_dispatch:\njobs:\n  use_api_via_script:\n    runs-on: ubuntu-latest\n    permissions:\n      issues: read\n    steps:\n      - name: Check out repo content\n        uses: actions/checkout@v6\n\n      - name: Setup Node\n        uses: actions/setup-node@v7\n        with:\n          node-version: '16.17.0'\n          cache: npm\n\n      - name: Install dependencies\n        run: npm install octokit\n\n      - name: Run script\n        run: |\n          node .github/actions-scripts/use-the-api.mjs\n        env:\n          TOKEN: ${{ secrets.GITHUB_TOKEN }}\n```\n\nНиже приведён пример JavaScript-скрипта с путь `.github/actions-scripts/use-the-api.mjs`к файлу .\n\n```javascript\nimport { Octokit } from \"octokit\"\n\nconst octokit = new Octokit({ \n  auth: process.env.TOKEN\n});\n\ntry {\n  const result = await octokit.request(\"GET /repos/{owner}/{repo}/issues\", {\n      owner: \"octocat\",\n      repo: \"Spoon-Knife\",\n    });\n\n  const titleAndAuthor = result.data.map(issue => {title: issue.title, authorID: issue.user.id})\n\n  console.log(titleAndAuthor)\n\n} catch (error) {\n  console.log(`Error! Status: ${error.status}. Message: ${error.response.data.message}`)\n}\n```\n\n### Аутентификация с помощью GitHub App\n\nЕсли вы аутентифицируете с GitHub Appпомощью , вы можете создать токен доступа для установки в вашем рабочем процессе:\n\n1. Сохраняйте GitHub Appидентификатор клиента как конфигурационную переменную. В следующем примере замените `APP_CLIENT_ID` имя переменной конфигурации. Вы можете найти идентификатор клиента на странице настроек вашего приложения или через API приложения. Дополнительные сведения см. в разделе [Конечные точки REST API для GitHub Apps](/ru/rest/apps/apps#get-an-app). Дополнительные сведения о переменных конфигурации см. в разделе [Хранение сведений в переменных](/ru/actions/how-tos/write-workflows/choose-what-workflows-do/use-variables#defining-configuration-variables-for-multiple-workflows).\n2. Создайте закрытый ключ для приложения. Храните содержимое получившегося файла как секрет. (Сохраните все содержимое файла, включая `-----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/how-tos/write-workflows/choose-what-workflows-do/use-secrets).\n3. Добавьте шаг для создания маркера и используйте его вместо `GITHUB_TOKEN`. Обратите внимание, что срок действия этого маркера истекает через 60 минут. Например:\n\n   ```yaml\n   on:\n     workflow_dispatch:\n   jobs:\n     use_api_via_script:\n       runs-on: ubuntu-latest\n       steps:\n         - name: Check out repo content\n           uses: actions/checkout@v6\n\n         - name: Setup Node\n           uses: actions/setup-node@v7\n           with:\n             node-version: '16.17.0'\n             cache: npm\n\n         - name: Install dependencies\n           run: npm install octokit\n\n         - name: Generate token\n           id: generate-token\n           uses: actions/create-github-app-token@v3\n           with:\n             client-id: ${{ vars.APP_CLIENT_ID }}\n             private-key: ${{ secrets.APP_PRIVATE_KEY }}\n\n         - name: Run script\n           run: |\n             node .github/actions-scripts/use-the-api.mjs\n           env:\n             TOKEN: ${{ steps.generate-token.outputs.token }}\n\n   ```\n\n</div>\n\n<div class=\"ghd-tool curl\">\n\n## Использование `curl` в командной строке\n\n> \\[!NOTE]\n> Если вы хотите делать API-запросы из командной строки, GitHub рекомендую использовать GitHub CLI, что упрощает аутентификацию и запросы. Для получения дополнительной информации о начале работы с REST API GitHub CLIс помощью , смотрите GitHub CLI версию этой статьи.\n\n1. Установите, `curl` если он еще не установлен на компьютере. Чтобы проверить, установлен ли `curl` он, выполните команду `curl --version` в командной строке. Если выходные данные содержат сведения о версии `curl`, то это означает `curl` , что устанавливается. Если вы получите сообщение, аналогичное `command not found: curl`, необходимо скачать и установить `curl`. Дополнительные сведения см [. на странице](https://curl.se/download.html) скачивания проекта Curl.\n\n2. Создание маркера доступа Например, создать personal access token или GitHub App пользовательский токен доступа. Этот маркер будет использоваться для проверки подлинности запроса, поэтому вы должны предоставить ему любые области или разрешения, необходимые для доступа к конечной точке. Дополнительные сведения см. в разделе [Проверка подлинности в REST API](/ru/rest/authentication/authenticating-to-the-rest-api).\n\n   > \\[!WARNING]\n   > Обратитесь к маркеру доступа как к паролю.\n   >\n   > Чтобы сохранить свой токен в безопасности, вы можете хранить его в Codespaces секрете и использовать командную строку через Codespaces. Дополнительные сведения см. в разделе [\"Управление зашифрованными секретами](/ru/codespaces/managing-your-codespaces/managing-your-account-specific-secrets-for-github-codespaces) для пространств кода\".\n\n   > Кроме того, вместо GitHub CLIэтого можно использовать`curl`.\n   > GitHub CLI позаботится о аутентификации за вас. Для получения дополнительной информации смотрите GitHub CLI версию этой страницы.\n   >\n   > Если эти параметры недоступны, попробуйте использовать другую службу CLI для безопасного хранения маркера.\n\n3. Используйте команду `curl` для выполнения запроса. Передайте свой жетон в `Authorization` заголовке. Замените `YOUR-TOKEN` маркером.\n\n   ```shell copy\n   curl --request GET \\\n   --url \"https://api.github.com/repos/octocat/Spoon-Knife/issues\" \\\n   --header \"Accept: application/vnd.github+json\" \\\n   --header \"Authorization: Bearer YOUR-TOKEN\"\n   ```\n\n   > \\[!NOTE]\n   > В большинстве случаев передать маркер с помощью `Authorization: Bearer` или `Authorization: token`. Однако при передаче веб-токена JSON (JWT) необходимо использовать `Authorization: Bearer`.\n\n## Использование `curl` команд в GitHub Actions\n\nВы также можете использовать `curl` команды в своих GitHub Actions рабочих процессах.\n\n### Проверка подлинности с помощью маркера доступа\n\nGitHub Рекомендует использовать встроенный `GITHUB_TOKEN` токен, а не создавать токен. Если это невозможно, сохраните маркер в качестве секрета и замените `GITHUB_TOKEN` в приведенном ниже примере именем секрета. Дополнительные сведения см. в `GITHUB_TOKEN`разделе [Использование GITHUB\\_TOKEN для проверки подлинности в рабочих процессах](/ru/actions/tutorials/authenticate-with-github_token). Дополнительные сведения о секретах см. в разделе [Использование секретов в GitHub Actions](/ru/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets).\n\n```yaml copy\non:\n  workflow_dispatch:\njobs:\n  use_api:\n    runs-on: ubuntu-latest\n    permissions:\n      issues: read\n    steps:\n      - env:\n          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        run: |\n          curl --request GET \\\n          --url \"https://api.github.com/repos/octocat/Spoon-Knife/issues\" \\\n          --header \"Accept: application/vnd.github+json\" \\\n          --header \"Authorization: Bearer $GH_TOKEN\"\n```\n\n### Аутентификация с помощью GitHub App\n\nЕсли вы аутентифицируете с GitHub Appпомощью , вы можете создать токен доступа для установки в вашем рабочем процессе:\n\n1. Сохраняйте GitHub Appидентификатор клиента как конфигурационную переменную. В следующем примере замените `APP_CLIENT_ID` имя переменной конфигурации. Вы можете найти идентификатор клиента на странице настроек вашего приложения или через API приложения. Дополнительные сведения см. в разделе [Конечные точки REST API для GitHub Apps](/ru/rest/apps/apps#get-an-app). Дополнительные сведения о переменных конфигурации см. в разделе [Хранение сведений в переменных](/ru/actions/how-tos/write-workflows/choose-what-workflows-do/use-variables#defining-configuration-variables-for-multiple-workflows).\n2. Создайте закрытый ключ для приложения. Храните содержимое получившегося файла как секрет. (Сохраните все содержимое файла, включая `-----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/how-tos/write-workflows/choose-what-workflows-do/use-secrets).\n3. Добавьте шаг для создания маркера и используйте его вместо `GITHUB_TOKEN`. Обратите внимание, что срок действия этого маркера истекает через 60 минут.\n   Например:\n\n   ```yaml copy\n   on:\n     workflow_dispatch:\n   jobs:\n     use_api:\n       runs-on: ubuntu-latest\n       steps:\n         - name: Generate token\n           id: generate-token\n           uses: actions/create-github-app-token@v3\n           with:\n             client-id: ${{ vars.APP_CLIENT_ID }}\n             private-key: ${{ secrets.APP_PRIVATE_KEY }}\n\n         - name: Use API\n           env:\n             GH_TOKEN: ${{ steps.generate-token.outputs.token }}\n           run: |\n             curl --request GET \\\n             --url \"https://api.github.com/repos/octocat/Spoon-Knife/issues\" \\\n             --header \"Accept: application/vnd.github+json\" \\\n             --header \"Authorization: Bearer $GH_TOKEN\"\n\n   ```\n\n</div>\n\n## Следующие шаги\n\nДополнительные сведения см. в руководстве [по началу работы с REST API](/ru/rest/using-the-rest-api/getting-started-with-the-rest-api)."}