简介
本文介绍如何快速地通过 GitHub CLI、curl
或 JavaScript 开始使用 GitHub REST API。 有关更详细的指南,请参阅 REST API 入门。
在命令行中使用 GitHub CLI
GitHub CLI 是从命令行使用 GitHub REST API 的最简单方式。
-
在 macOS、Windows 或 Linux 上安装 GitHub CLI。 有关安装说明的详细信息,请参阅 GitHub CLI 存储库中的安装。
-
若要向 GitHub 进行身份验证,请从终端运行以下命令。
gh auth login
-
选择要进行身份验证的位置:
- 如果通过 GitHub.com 访问 GitHub,请选择“GitHub.com”****。
- 如果通过其他域访问 GitHub,请选择“其他”,然后输入主机名(例如
octocorp.ghe.com
)****。
-
按照屏幕上的其余提示操作。
选择 HTTPS 作为 Git 操作的首选协议时,GitHub CLI 将自动存储 Git 凭据,并对询问是否要使用 GitHub 凭据向 Git 进行身份验证的提示回答“是”。 此操作非常有用,因为这允许直接使用
git push
、git pull
等 Git 命令,无需设置单独的凭据管理器或使用 SSH。 -
使用 GitHub CLI 发出请求,后接路径。 使用
--method
或-X
标志指定方法。 有关详细信息,请参阅 GitHub CLIapi
文档。此示例向使用方法
GET
和路径/octocat
的“Get Octocat”终结点发出请求。 有关此终结点的完整参考文档,请参阅 元数据的 REST API 终结点。Shell gh api /octocat --method GET
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
替换为存储库的名称。
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
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 进行身份验证,则可以在工作流中创建安装访问令牌:
-
将 GitHub App 的 ID 存储为配置变量。 在下面的示例中,将
APP_ID
替换为配置变量的名称。 可以在应用的设置页面上或通过 API 找到应用 ID。 有关详细信息,请参阅“GitHub Apps 的 REST API 终结点”。 有关配置变量的详细信息,请参阅 在变量中存储信息。 -
为应用生成私钥。 将所生成文件的内容作为机密进行存储。 (存储文件的全部内容,包括
-----BEGIN RSA PRIVATE KEY-----
和-----END RSA PRIVATE KEY-----
。)在以下示例中,将APP_PEM
替换为机密的名称。 有关详细信息,请参阅“管理 GitHub 应用的私钥”。 有关机密的详细信息,请参阅 在 GitHub Actions 中使用机密。 -
添加用于生成令牌的步骤,并使用该令牌而不是
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
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 入门。