简介
本文介绍如何快速地通过 GitHub CLI、curl
或 JavaScript 开始使用 GitHub REST API。 有关更详细的指南,请参阅 REST API 入门。
使用命令行中的 curl
Note
如果要从命令行发出 API 请求,GitHub 建议使用 GitHub CLI,可以简化身份验证和请求。 有关通过 GitHub CLI 开始使用 REST API 的详细信息,请参阅本文的 GitHub CLI 版本。
-
如果计算机上尚未安装
curl
,请安装。 若要检查是否安装了curl
,请在命令行中执行curl --version
。 如果输出是有关curl
版本的信息,则表示已安装curl
。 如果收到类似于command not found: curl
的消息,则需要下载并安装curl
。 有关详细信息,请参阅 curl 项目下载页面。 -
创建访问令牌。 例如,创建 personal access token 或 GitHub App 用户访问令牌。 使用此令牌对请求进行身份验证,因此应向其授予访问终结点所需的任何范围或权限。 有关详细信息,请参阅“对 REST API 进行身份验证”。
Warning
将访问令牌看做是密码。
若要确保令牌安全,可以将令牌存储为 Codespaces 机密,并通过 Codespaces 使用命令行。 有关详细信息,请参阅管理 Codespaces 的加密机密。
还可以使用 GitHub CLI,而不是
curl
。 GitHub CLI 会为你处理身份验证。 有关详细信息,请参阅此页面的 GitHub CLI 版本。如果无法使用这些选项,请考虑使用其他 CLI 服务安全地存储令牌。
-
使用
curl
命令发出请求。 在Authorization
标头中传递令牌。 将YOUR-TOKEN
替换为令牌。Shell curl --request GET \ --url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer YOUR-TOKEN"
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 Web 令牌 (JWT),则必须使用Authorization: Bearer
。
在 GitHub Actions 中使用 curl
命令
还可以在 GitHub Actions 工作流中使用 curl
命令。
使用访问令牌进行身份验证
GitHub 建议使用内置 GITHUB_TOKEN
,而不是创建令牌。 如果无法执行此操作,请将令牌存储为机密,并将以下示例中的 GITHUB_TOKEN
替换为机密的名称。 有关 GITHUB_TOKEN
的详细信息,请参阅 自动令牌身份验证。 有关机密的详细信息,请参阅 在 GitHub Actions 中使用机密。
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"
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 进行身份验证,则可以在工作流中创建安装访问令牌:
-
将 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 分钟后过期。 例如:YAML on: workflow_dispatch: jobs: use_api: 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: | curl --request GET \ --url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer $GH_TOKEN"
on: workflow_dispatch: jobs: use_api: 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: | curl --request GET \ --url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer $GH_TOKEN"
后续步骤
有关更详细的指南,请参阅 REST API 入门。