Skip to main content

GitHub REST API 快速入门

了解如何开始使用 GitHub REST API。

简介

本文介绍如何快速地通过 GitHub CLI、curl 或 JavaScript 开始使用 GitHub REST API。 有关更详细的指南,请参阅 REST API 入门

在命令行中使用 GitHub CLI

GitHub CLI 是从命令行使用 GitHub REST API 的最简单方式。

  1. 在 macOS、Windows 或 Linux 上安装 GitHub CLI。 有关安装说明的详细信息,请参阅 GitHub CLI 存储库中的安装

  2. 若要向 GitHub 进行身份验证,请从终端运行以下命令。

    gh auth login
    
  3. 选择要进行身份验证的位置:

    • 如果通过 GitHub.com 访问 GitHub,请选择“GitHub.com”****。
    • 如果通过其他域访问 GitHub,请选择“其他”,然后输入主机名(例如 octocorp.ghe.com)****。
  4. 按照屏幕上的其余提示操作。

    选择 HTTPS 作为 Git 操作的首选协议时,GitHub CLI 将自动存储 Git 凭据,并对询问是否要使用 GitHub 凭据向 Git 进行身份验证的提示回答“是”。 此操作非常有用,因为这允许直接使用 git pushgit pull 等 Git 命令,无需设置单独的凭据管理器或使用 SSH。

  5. 使用 GitHub CLI 发出请求,后接路径。 使用 --method-X 标志指定方法。 有关详细信息,请参阅 GitHub CLI api 文档

    此示例向使用方法 GET 和路径 /octocat 的“Get Octocat”终结点发出请求。 有关此终结点的完整参考文档,请参阅 元数据的 REST API 终结点

    Shell
    gh api /octocat --method GET
    

在 GitHub Actions 中使用 GitHub CLI

还可以在 GitHub Actions 工作流中使用 GitHub CLI。 有关详细信息,请参阅“在工作流中使用 GitHub CLI”。

使用访问令牌进行身份验证

不要使用 gh auth login 命令,而是将访问令牌作为名为 GH_TOKEN 的环境变量进行传递。 GitHub 建议使用内置 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: |
          gh api http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues

使用 GitHub App 进行身份验证

如果使用 GitHub App 进行身份验证,则可以在工作流中创建安装访问令牌:

  1. 将 GitHub App 的 ID 存储为配置变量。 在下面的示例中,将 APP_ID 替换为配置变量的名称。 可以在应用的设置页面上或通过 API 找到应用 ID。 有关详细信息,请参阅“GitHub Apps 的 REST API 终结点”。 有关配置变量的详细信息,请参阅 在变量中存储信息

  2. 为应用生成私钥。 将所生成文件的内容作为机密进行存储。 (存储文件的全部内容,包括 -----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----。)在以下示例中,将 APP_PEM 替换为机密的名称。 有关详细信息,请参阅“管理 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@v1
            with:
              app-id: ${{ vars.APP_ID }}
              private-key: ${{ secrets.APP_PEM }}
          - 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
    

后续步骤

有关更详细的指南,请参阅 REST API 入门