Einführung
In diesem Artikel wird beschrieben, wie Sie schnell mit der GitHub REST-API mit GitHub CLI, curloder JavaScript beginnen. Einen ausführlicheren Leitfaden findest du unter Erste Schritte mit der REST-API.
Verwenden von GitHub CLI in der Befehlszeile
GitHub CLI ist die einfachste Möglichkeit, die GitHub REST-API über die Befehlszeile zu verwenden.
-
Installiere GitHub CLI unter macOS, Windows oder Linux. Weitere Informationen finden Sie unter Installation im Repository GitHub CLI.
-
Führe den folgenden Befehl im Terminal aus, um dich bei GitHub zu authentifizieren.
gh auth login -
Wähle aus, wo du dich authentifizieren möchtest:
- Wenn du über GitHub auf GitHub.com zugreifst, wähle GitHub.com aus.
- Wenn du über eine andere Domäne auf GitHub zugreifst, wähle Other aus, und gib dann den Hostnamen ein, z. B.
octocorp.ghe.com.
-
Befolge die restlichen Anweisungen auf dem Bildschirm.
GitHub CLI speichert automatisch Ihre Git-Anmeldeinformationen für Sie, wenn Sie HTTPS als bevorzugtes Protokoll für Git-Operationen auswählen und die Frage, ob Sie sich bei Git mit Ihren GitHub-Anmeldeinformationen authentifizieren möchten, mit „Ja“ beantworten. Dies kann nützlich sein, da Sie damit Git-Befehle wie
git pushundgit pullverwenden können, ohne eine separate Anmeldeinformationsverwaltung einrichten oder SSH verwenden zu müssen. -
Stellen Sie eine Anforderung mithilfe des GitHub CLI
apiUnterbefehls vor, gefolgt vom Pfad. Verwende das Flag--methododer-X, um die Methode anzugeben. Weitere Informationen finden Sie in der GitHub CLIapiDokumentation.In diesem Beispiel wird eine Anforderung an den Endpunkt „Get Octocat“ gestellt, der die Methode
GETund den Pfad/octocatverwendet. Die vollständige Referenzdokumentation für diesen Endpunkt findest du unter REST-API-Endpunkte für Metadaten.Shell gh api /octocat --method GET
gh api /octocat --method GET
Verwenden von GitHub CLI in GitHub Actions
Sie können GitHub CLI auch in Ihren GitHub Actions-Workflows verwenden. Weitere Informationen finden Sie unter Verwenden GitHub CLI in Workflows.
Authentifizieren mit einem Zugriffstoken
Anstatt den Befehl gh auth login zu verwenden, übergibst du ein Zugriffstoken als Umgebungsvariable namens GH_TOKEN.
GitHub empfiehlt, das integrierte GITHUB_TOKEN Token zu verwenden, anstatt ein Token zu erstellen. Wenn das nicht möglich ist, speichere dein Token als Geheimnis, und ersetze GITHUB_TOKEN im folgenden Beispiel durch den Namen deines Geheimnisses. Weitere Informationen zu GITHUB_TOKEN findest du unter Verwenden von GITHUB_TOKEN für die Authentifizierung in Workflows. Weitere Informationen zu Geheimnissen findest du unter Verwenden von Geheimnissen in GitHub-Aktionen.
Der folgende Beispielworkflow verwendet den Endpunkt Repository-Issues auflisten und ruft eine Liste von Issues in einem Repository ab, das Sie angeben. Ersetzen Sie HOSTNAME durch den Namen von Ihre GitHub Enterprise Server-Instance. Ersetzen Sie REPO-OWNER durch den Namen des Kontos, das das Repository besitzt. Ersetzen Sie REPO-NAME durch den Namen des Repositorys.
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
Authentifizieren mit einem GitHub App
Wenn Sie sich mit einem GitHub Appauthentifizieren, können Sie ein Installationszugriffstoken in Ihrem Workflow erstellen:
-
Speichern Sie ihre GitHub AppClient-ID als Konfigurationsvariable. Ersetzen Sie im folgenden Beispiel
APP_CLIENT_IDdurch den Namen der Konfigurationsvariablen. Sie finden Ihre Client-ID auf der Einstellungsseite für Ihre App oder über die API. Weitere Informationen finden Sie unter REST-API-Endpunkte für GitHub Apps. Weitere Informationen zu Konfigurationsvariablen findest du unter Speichern von Informationen in Variablen. -
Generiere einen privaten Schlüssel für deine App. Speichere den Inhalt der resultierenden Datei als Geheimnis. (Speichere den gesamten Inhalt der Datei, einschließlich
-----BEGIN RSA PRIVATE KEY-----und-----END RSA PRIVATE KEY-----.) Ersetze im folgenden BeispielAPP_PRIVATE_KEYdurch den Namen des Geheimnisses. Weitere Informationen finden Sie unter Verwalten privater Schlüssel für GitHub Apps. Weitere Informationen zu Geheimnissen findest du unter Verwenden von Geheimnissen in GitHub-Aktionen. -
Füge einen Schritt zum Generieren eines Tokens hinzu, und verwende diesen Token anstelle von
GITHUB_TOKEN. Beachte, dass dieses Token nach 60 Minuten abläuft. Ersetzen Sie im folgenden BeispielHOSTNAMEdurch den Namen von Ihre GitHub Enterprise Server-Instance. Ersetzen SieREPO-OWNERdurch den Namen des Kontos, das das Repository besitzt. Ersetzen SieREPO-NAMEdurch den Namen des Repositorys.YAML 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 http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issueson: 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 http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues
Verwenden von „Octokit.js“
Sie können Octokit.js verwenden, um mit der GitHub REST-API in Ihren JavaScript-Skripts zu interagieren. Weitere Informationen findest du unter Skripterstellung mit der REST-API und JavaScript.
-
Erstelle ein Zugriffstoken. Erstellen Sie z. B. ein personal access token Benutzerzugriffstoken oder ein GitHub App Benutzerzugriffstoken. Sie verwenden dieses Token, um Ihre Anforderung zu authentifizieren, daher sollten Sie ihm alle Bereiche oder Berechtigungen erteilen, die für den Zugriff auf diesen Endpunkt erforderlich sind. Weitere Informationen finden Sie unter Authentifizieren bei der REST-API oder Identifizieren und Autorisieren von Benutzern für GitHub Apps.
Warnung
Behandeln Sie das Zugriffstoken wie ein Kennwort.
Um Ihr Token sicher aufzubewahren, können Sie es als Secret speichern und Ihr Skript über GitHub Actions ausführen. Weitere Informationen finden Sie im Abschnitt "Using Octokit.js" GitHub Actions .
Wenn diese Optionen nicht verfügbar sind, erwägen Sie, einen anderen CLI-Dienst zu nutzen, um Ihr Token sicher zu speichern.
-
Installiere
octokit. Beispiel:npm install octokit. Informationen über andere Möglichkeiten zum Installieren oder Laden vonoctokitfindest du in der Octokit.js-Infodatei. -
Importiere
octokitin dein Skript. Beispiel:import { Octokit } from "octokit";. Informationen über andere Möglichkeiten zum Importieren vonoctokitfindest du in der Octokit.js-Infodatei. -
Erstellen Sie eine Instanz von
Octokitmit Ihrem Token. Ersetzen SieHOSTNAMEdurch den Namen von Ihre GitHub Enterprise Server-Instance. Ersetzen SieYOUR-TOKENdurch Ihr Token.JavaScript const octokit = new Octokit({ baseUrl: "http(s)://HOSTNAME/api/v3", auth: 'YOUR-TOKEN' });const octokit = new Octokit({ baseUrl: "http(s)://HOSTNAME/api/v3", auth: 'YOUR-TOKEN' }); -
Verwenden Sie
octokit.request, um Ihre Anforderung auszuführen. Übergib die HTTP-Methode und den Pfad als erstes Argument. Gib alle Pfad-, Abfrage- und Textparameter als zweites Argument in einem Objekt an. Weitere Informationen zu Parametern findest du unter Erste Schritte mit der REST-API.Zum Beispiel ist in der folgenden Anfrage die HTTP-Methode
GET, der Pfad/repos/{owner}/{repo}/issues, und die Parameter sindowner: "REPO-OWNER",repo: "REPO-NAME". Ersetzen Sie denREPO-OWNERNamen des Kontos, das das Repository besitzt, undREPO-NAMEdurch den Namen des Repositorys.JavaScript await octokit.request("GET /repos/{owner}/{repo}/issues", { owner: "REPO-OWNER", repo: "REPO-NAME", });await octokit.request("GET /repos/{owner}/{repo}/issues", { owner: "REPO-OWNER", repo: "REPO-NAME", });
Verwenden von Octokit.js in GitHub Actions
Sie können Ihre JavaScript-Skripts auch in Ihren GitHub Actions Workflows ausführen. Weitere Informationen finden Sie unter Workflowsyntax für GitHub Actions.
Authentifizieren mit einem Zugriffstoken
GitHub empfiehlt, das integrierte GITHUB_TOKEN zu verwenden, anstatt selbst ein Token zu erstellen. Wenn das nicht möglich ist, speichere dein Token als Geheimnis, und ersetze GITHUB_TOKEN im folgenden Beispiel durch den Namen deines Geheimnisses. Weitere Informationen zu GITHUB_TOKEN findest du unter Verwenden von GITHUB_TOKEN für die Authentifizierung in Workflows. Weitere Informationen zu Geheimnissen findest du unter Verwenden von Geheimnissen in GitHub-Aktionen.
Der folgende Beispielworkflow:
- Überprüfen des Repositoryinhalts
- Einrichten von Node.js
- Installieren von
octokit - Speichern des Werts von
GITHUB_TOKENals Umgebungsvariable namensTOKENund Ausführen des Skripts.github/actions-scripts/use-the-api.mjs, das auf diese Umgebungsvariable alsprocess.env.TOKENzugreifen kann
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 }}
Im Folgenden sehen Sie ein Beispiel-JavaScript-Skript mit dem Dateipfad .github/actions-scripts/use-the-api.mjs. Ersetzen Sie HOSTNAME durch den Namen von Ihre GitHub Enterprise Server-Instance. Ersetzen Sie REPO-OWNER durch den Namen des Kontos, das das Repository besitzt. Ersetzen Sie REPO-NAME durch den Namen des Repositorys.
import { Octokit } from "octokit"
const octokit = new Octokit({
baseUrl: "http(s)://HOSTNAME/api/v3",
auth: process.env.TOKEN
});
try {
const result = await octokit.request("GET /repos/{owner}/{repo}/issues", {
owner: "REPO-OWNER",
repo: "REPO-NAME",
});
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}`)
}
Authentifizieren mit einem GitHub App
Wenn Sie sich mit einem GitHub Appauthentifizieren, können Sie ein Installationszugriffstoken in Ihrem Workflow erstellen:
-
Speichern Sie ihre GitHub AppClient-ID als Konfigurationsvariable. Ersetzen Sie im folgenden Beispiel
APP_CLIENT_IDdurch den Namen der Konfigurationsvariablen. Sie finden Ihre Client-ID auf der Einstellungsseite für Ihre App oder über die App-API. Weitere Informationen finden Sie unter REST-API-Endpunkte für GitHub Apps. Weitere Informationen zu Konfigurationsvariablen findest du unter Speichern von Informationen in Variablen. -
Generiere einen privaten Schlüssel für deine App. Speichere den Inhalt der resultierenden Datei als Geheimnis. (Speichere den gesamten Inhalt der Datei, einschließlich
-----BEGIN RSA PRIVATE KEY-----und-----END RSA PRIVATE KEY-----.) Ersetze im folgenden BeispielAPP_PRIVATE_KEYdurch den Namen des Geheimnisses. Weitere Informationen finden Sie unter Verwalten privater Schlüssel für GitHub Apps. Weitere Informationen zu Geheimnissen findest du unter Verwenden von Geheimnissen in GitHub-Aktionen. -
Füge einen Schritt zum Generieren eines Tokens hinzu, und verwende diesen Token anstelle von
GITHUB_TOKEN. Beachte, dass dieses Token nach 60 Minuten abläuft. Beispiel: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 }}
Verwenden von curl in der Befehlszeile
Hinweis
Wenn Sie API-Anforderungen über die Befehlszeile stellen möchten, GitHub empfiehlt die Verwendung GitHub CLI, die die Authentifizierung und Anforderungen vereinfacht. Weitere Informationen zu den ersten Schritten mit der REST-API mit GitHub CLI finden Sie in der GitHub CLI-Version dieses Artikels.
-
Installiere
curlauf deinem Computer, sofern nicht bereits geschehen. Um festzustellen, obcurlbereits installiert ist, führe an der Befehlszeilecurl --versionaus. Wenn die Ausgabe Informationen über die Version voncurlenthält, bedeutet dies, dasscurlinstalliert ist. Wenn du eine Meldung der Artcommand not found: curlerhältst, musst ducurlherunterladen und installieren. Weitere Informationen findest du auf der Downloadseite für das curl-Projekt. -
Erstelle ein Zugriffstoken. Erstellen Sie z. B. ein personal access token Benutzerzugriffstoken oder ein GitHub App Benutzerzugriffstoken. Sie verwenden dieses Token, um Ihre Anforderung zu authentifizieren, daher sollten Sie ihm alle Bereiche oder Berechtigungen erteilen, die für den Zugriff auf den Endpunkt erforderlich sind. Weitere Informationen finden Sie unter Authentifizieren bei der REST-API.
Warnung
Behandeln Sie das Zugriffstoken wie ein Kennwort.
Sie können auch GitHub CLI anstelle von
curlverwenden. GitHub CLI kümmert sich um die Authentifizierung für Sie. Weitere Informationen finden Sie in der GitHub CLI Version dieser Seite.Wenn diese Optionen nicht verfügbar sind, erwägen Sie, einen anderen CLI-Dienst zu nutzen, um Ihr Token sicher zu speichern.
-
Verwenden Sie den Befehl
curl, um Ihre Anforderung auszuführen. Übergeben Sie Ihr Token in einerAuthorizationKopfzeile. Ersetzen SieHOSTNAMEdurch den Namen von Ihre GitHub Enterprise Server-Instance. Ersetzen SieREPO-OWNERdurch den Namen des Kontos, das das Repository besitzt. Ersetzen SieREPO-NAMEdurch den Namen des Repositorys. Ersetzen SieYOUR-TOKENdurch Ihr Token.Shell curl --request GET \ --url "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer YOUR-TOKEN"
curl --request GET \ --url "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer YOUR-TOKEN"Hinweis
In den meisten Fällen kannst du
Authorization: BeareroderAuthorization: tokenverwenden, um ein Token zu übergeben. Wenn du jedoch ein JWT (JSON Web Token) übergibst, musst duAuthorization: Bearerverwenden.
Verwenden von curl Befehlen in GitHub Actions
Sie können auch curl Befehle in Ihren GitHub Actions Workflows verwenden.
Authentifizieren mit einem Zugriffstoken
GitHub empfiehlt, das integrierte GITHUB_TOKEN zu verwenden, statt ein Token zu erstellen. Wenn das nicht möglich ist, speichere dein Token als Geheimnis, und ersetze GITHUB_TOKEN im folgenden Beispiel durch den Namen deines Geheimnisses. Weitere Informationen zu GITHUB_TOKEN findest du unter Verwenden von GITHUB_TOKEN für die Authentifizierung in Workflows. Weitere Informationen zu Geheimnissen findest du unter Verwenden von Geheimnissen in GitHub-Aktionen.
Ersetzen Sie im folgenden Beispiel HOSTNAME durch den Namen von Ihre GitHub Enterprise Server-Instance. Ersetzen Sie REPO-OWNER durch den Namen des Kontos, das das Repository besitzt. Ersetzen Sie REPO-NAME durch den Namen des Repositorys.
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 "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/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 "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer $GH_TOKEN"
Authentifizieren mit einem GitHub App
Wenn Sie sich mit einem GitHub Appauthentifizieren, können Sie ein Installationszugriffstoken in Ihrem Workflow erstellen:
-
Speichern Sie ihre GitHub AppClient-ID als Konfigurationsvariable. Ersetzen Sie im folgenden Beispiel
APP_CLIENT_IDdurch den Namen der Konfigurationsvariablen. Sie finden Ihre Client-ID auf der Einstellungsseite für Ihre App oder über die App-API. Weitere Informationen finden Sie unter REST-API-Endpunkte für GitHub Apps. Weitere Informationen zu Konfigurationsvariablen findest du unter Speichern von Informationen in Variablen. -
Generiere einen privaten Schlüssel für deine App. Speichere den Inhalt der resultierenden Datei als Geheimnis. (Speichere den gesamten Inhalt der Datei, einschließlich
-----BEGIN RSA PRIVATE KEY-----und-----END RSA PRIVATE KEY-----.) Ersetze im folgenden BeispielAPP_PRIVATE_KEYdurch den Namen des Geheimnisses. Weitere Informationen finden Sie unter Verwalten privater Schlüssel für GitHub Apps. Weitere Informationen zum Speichern von Geheimnissen findest du unter Verwenden von Geheimnissen in GitHub-Aktionen. -
Füge einen Schritt zum Generieren eines Tokens hinzu, und verwende diesen Token anstelle von
GITHUB_TOKEN. Beachte, dass dieses Token nach 60 Minuten abläuft. Ersetzen Sie im folgenden BeispielHOSTNAMEdurch den Namen von Ihre GitHub Enterprise Server-Instance. Ersetzen SieREPO-OWNERdurch den Namen des Kontos, das das Repository besitzt. Ersetzen SieREPO-NAMEdurch den Namen des Repositorys.YAML 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 "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/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@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 "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer $GH_TOKEN"
Nächste Schritte
Einen ausführlicheren Leitfaden findest du unter Erste Schritte mit der REST-API.