Introducción
En este artículo se describe cómo empezar a usar rápidamente la API de REST de GitHub mediante GitHub CLI, JavaScript o curl. Para ver una guía más detallada, consulta Introducción a la API REST.
Usar GitHub CLI en la línea de comandos
GitHub CLI es la forma más sencilla de utilizar la API de REST de GitHub desde la línea de comandos.
-
Instale GitHub CLI en macOS, Windows o Linux. Para obtener más información, consulte Instalación en el repositorio de GitHub CLI.
-
Para autenticarte en GitHub, ejecuta el siguiente comando desde el terminal.
gh auth login -
Selecciona dónde deseas autenticarte:
- Si accedes a GitHub en GitHub.com, selecciona GitHub.com.
- Si accedes a GitHub en un dominio diferente, selecciona Other y, a continuación, escribe tu nombre de host (por ejemplo:
octocorp.ghe.com).
-
Sigue el resto de las instrucciones que aparecen en pantalla.
GitHub CLI almacena automáticamente sus credenciales de Git automáticamente cuando elija HTTPS como su protocolo preferido para las operaciones de Git y responda “yes” cuando le pregunten si quiere autenticarse en Git con sus credenciales GitHub. Esto puede ser útil, ya que permite usar comandos Git como
git pushygit pullsin necesidad de configurar un administrador de credenciales independiente o usar SSH. -
Realizar una solicitud con el subcomando
apide GitHub CLI seguido de la ruta de acceso. Usa la marca--methodo-Xpara especificar el método. Para obtener más información, consulta la documentación deapiGitHub CLI.En este ejemplo se hace una solicitud al punto de conexión “Obtener Octocat”, que usa el método
GETy la ruta de acceso/octocat. Para obtener la documentación de referencia completa de este punto de conexión, consulta Puntos de conexión de la API de REST para metadatos.Shell gh api /octocat --method GET
gh api /octocat --method GET
Uso de GitHub CLI en GitHub Actions
También puedes usar GitHub CLI en los flujos de trabajo de GitHub Actions. Para más información, consulta Uso de GitHub CLI en flujos de trabajo.
Autenticación con token de acceso
En lugar de usar el comando gh auth login, pasa el token de acceso como una variable de entorno denominada GH_TOKEN. GitHub recomienda autenticarse con el GITHUB_TOKEN integrado en lugar de crear un token. Si esto no es posible, almacena el token como secreto y reemplaza GITHUB_TOKEN en el ejemplo siguiente por el nombre del secreto. Para obtener más información sobre GITHUB_TOKEN, consulta Uso de GITHUB_TOKEN para la autenticación en flujos de trabajo. Para obtener más información sobre secretos, consulta Uso de secretos en Acciones de GitHub.
En el siguiente flujo de trabajo de ejemplo se usa el punto de conexión Enumerar incidencias del repositorio y se solicita una lista de incidencias en un repositorio que especifique . Reemplace HOSTNAME por el nombre de tu instancia de GitHub Enterprise Server. Reemplaza REPO-OWNER por el nombre de la cuenta propietaria del repositorio. Reemplaza REPO-NAME por el nombre del repositorio.
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
Autenticación con una GitHub App
Si está autenticando con un GitHub App, puedes crear un token de acceso de instalación en el flujo de trabajo:
-
Almacena el id. de tu GitHub App como una variable de configuración. En el ejemplo siguiente, reemplaza
APP_IDpor el nombre de la variable de configuración. Puedes encontrar tu ID de app en la página de ajustes de tu app o mediante la API. Para más información, consulta Puntos de conexión de la API de REST para GitHub Apps. Para obtener más información sobre las variables de configuración, consulta Almacenamiento de información en variables. -
Generar una llave privada para tu app. Almacena el contenido del archivo resultante como un secreto. (Almacena todo el contenido del archivo, incluido el contenido de
-----BEGIN RSA PRIVATE KEY-----y-----END RSA PRIVATE KEY-----). En el siguiente ejemplo, reemplazaAPP_PEMpor el nombre del secreto. Para más información, consulta Administración de claves privadas para aplicaciones de GitHub. Para obtener más información sobre secretos, consulta Uso de secretos en Acciones de GitHub. -
Agrega un paso para generar un token y use ese token en lugar de
GITHUB_TOKEN. Ten en cuenta que este token expirará después de 60 minutos. En el siguiente ejemplo, reemplazaHOSTNAMEpor el nombre de tu instancia de GitHub Enterprise Server. ReemplazaREPO-OWNERpor el nombre de la cuenta propietaria del repositorio. ReemplazaREPO-NAMEpor el nombre del repositorio.YAML on: workflow_dispatch: jobs: track_pr: runs-on: ubuntu-latest steps: - name: Generate token id: generate-token uses: actions/create-github-app-token@v2 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/issueson: workflow_dispatch: jobs: track_pr: runs-on: ubuntu-latest steps: - name: Generate token id: generate-token uses: actions/create-github-app-token@v2 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
Uso de Octokit.js
Puedes usar Octokit.js para interactuar con la API de REST de GitHub en los scripts de JavaScript. Para obtener más información, consulta Scripting con la API REST y JavaScript.
-
Creación de un token de acceso. Por ejemplo, cree un personal access token o un token de acceso de usuario GitHub App. Usarás este token para autenticar la solicitud, por lo que deberías concederle los ámbitos o permisos necesarios para acceder a ese punto de conexión. Para obtener más información, consulte Autenticación en la API REST o Identificar y autorizar usuarios para aplicaciones de GitHub.
Advertencia
Trate el token de acceso igual que una contraseña.
Para proteger el token, puedes almacenar el token como secreto y ejecutar el script a través de GitHub Actions. Para obtener más información, consulta la sección Uso de Octokit.js en GitHub Actions.
Si estas opciones no son posibles, considere el uso de otro servicio de CLI para almacenar el token de forma segura.
-
Instalar
octokit. Por ejemplo,npm install octokit. Para ver otras formas de instalar o cargaroctokit, consulta el archivo README de Octokit.js. -
Importar
octokiten tu script. Por ejemplo,import { Octokit } from "octokit";. Para obtener otras formas de importaroctokit, consulta el archivo README de Octokit.js. -
Cree una instancia de
Octokitcon el token. ReemplaceHOSTNAMEpor el nombre de tu instancia de GitHub Enterprise Server. ReemplaceYOUR-TOKENpor el 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' }); -
Usa
octokit.requestpara ejecutar la solicitud. Envía el método HTTP y la ruta de acceso como primer argumento. Especifica cualquier parámetro de ruta, consulta y cuerpo en un objeto como segundo argumento. Para más información sobre los parámetros de consulta, consulta Introducción a la API REST.Por ejemplo, en la siguiente solicitud, el método HTTP es
GET, la ruta de acceso es/repos/{owner}/{repo}/issues, los parámetros sonowner: "REPO-OWNER"yrepo: "REPO-NAME". ReemplaceREPO-OWNERpor el nombre de la cuenta que posee el repositorio yREPO-NAMEpor el nombre del repositorio.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", });
Uso de Octokit.js en GitHub Actions
También puedes ejecutar los scripts de JavaScript en los flujos de trabajo de GitHub Actions. Para más información, consulta Sintaxis del flujo de trabajo para GitHub Actions.
Autenticación con token de acceso
GitHub recomienda autenticarse con el GITHUB_TOKEN integrado en lugar de crear un token. Si esto no es posible, almacena el token como secreto y reemplaza GITHUB_TOKEN en el ejemplo siguiente por el nombre del secreto. Para obtener más información sobre GITHUB_TOKEN, consulta Uso de GITHUB_TOKEN para la autenticación en flujos de trabajo. Para obtener más información sobre secretos, consulta Uso de secretos en Acciones de GitHub.
Observa el siguiente flujo de trabajo de ejemplo:
- Comprueba el contenido del repositorio
- Configura Node.js
- Instala
octokit - Almacena el valor de
GITHUB_TOKENcomo una variable de entorno denominadaTOKENy ejecuta.github/actions-scripts/use-the-api.mjs, que puede tener acceso a esa variable de entorno comoprocess.env.TOKEN
on:
workflow_dispatch:
jobs:
use_api_via_script:
runs-on: ubuntu-latest
permissions:
issues: read
steps:
- name: Check out repo content
uses: actions/checkout@v5
- 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 }}
A continuación se muestra un script JavaScript de ejemplo con la ruta de acceso al archivo .github/actions-scripts/use-the-api.mjs. Reemplace HOSTNAME por el nombre de tu instancia de GitHub Enterprise Server. Reemplaza REPO-OWNER por el nombre de la cuenta propietaria del repositorio. Reemplaza REPO-NAME por el nombre del repositorio.
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}`)
}
Autenticación con una GitHub App
Si está autenticando con un GitHub App, puede crear un token de acceso de instalación dentro de su flujo de trabajo.
-
Almacena el id. de tu GitHub App como una variable de configuración. En el ejemplo siguiente, reemplaza
APP_IDpor el nombre de la variable de configuración. Puedes encontrar tu ID de app en la página de ajustes de tu app o mediante la API de la misma. Para más información, consulta Puntos de conexión de la API de REST para GitHub Apps. Para obtener más información sobre las variables de configuración, consulta Almacenamiento de información en variables. -
Generar una llave privada para tu app. Almacena el contenido del archivo resultante como un secreto. (Almacena todo el contenido del archivo, incluido el contenido de
-----BEGIN RSA PRIVATE KEY-----y-----END RSA PRIVATE KEY-----). En el siguiente ejemplo, reemplazaAPP_PEMpor el nombre del secreto. Para más información, consulta Administración de claves privadas para aplicaciones de GitHub. Para obtener más información sobre secretos, consulta Uso de secretos en Acciones de GitHub. -
Agrega un paso para generar un token y use ese token en lugar de
GITHUB_TOKEN. Ten en cuenta que este token expirará después de 60 minutos. Por ejemplo:on: workflow_dispatch: jobs: use_api_via_script: runs-on: ubuntu-latest steps: - name: Check out repo content uses: actions/checkout@v5 - 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@v2 with: app-id: ${{ vars.APP_ID }} private-key: ${{ secrets.APP_PEM }} - name: Run script run: | node .github/actions-scripts/use-the-api.mjs env: TOKEN: ${{ steps.generate-token.outputs.token }}
Uso de curl en la línea de comandos
Nota:
Si quieres realizar solicitudes de API desde la línea de comandos, GitHub recomienda usar GitHub CLI, lo que simplifica la autenticación y las solicitudes. Para obtener más información sobre cómo empezar a trabajar con la API de REST con GitHub CLI, consulta la versión de GitHub CLI de este artículo.
-
Instala
curlsi aún no está instalado en la máquina. Para comprobar sicurlestá instalado, ejecutacurl --versionen la línea de comandos. Si la salida es información sobre la versión decurl, significa quecurlestá instalado. Si recibes un mensaje similar acommand not found: curl, debes descargar e instalarcurl. Para más información, consulta la página de descarga del proyecto curl. -
Creación de un token de acceso. Por ejemplo, cree un personal access token o un token de acceso de usuario GitHub App. Usarás este token para autenticar la solicitud, por lo que deberías concederle los ámbitos o permisos necesarios para acceder al punto de conexión. Para más información, consulta Autenticación en la API REST.
Advertencia
Trate el token de acceso igual que una contraseña.
También puedes usar GitHub CLI en lugar de
curl. GitHub CLI se encargará de la autenticación. Para obtener más información, consulta la versión de GitHub CLI de esta página.Si estas opciones no son posibles, considere el uso de otro servicio de CLI para almacenar el token de forma segura.
-
Usa el comando
curlpara realizar la solicitud. Pase el token en un encabezadoAuthorization. ReemplaceHOSTNAMEpor el nombre de tu instancia de GitHub Enterprise Server. ReemplazaREPO-OWNERpor el nombre de la cuenta propietaria del repositorio. ReemplazaREPO-NAMEpor el nombre del repositorio. ReemplazaYOUR-TOKENpor el 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"Nota:
En la mayoría de los casos, puedes usar
Authorization: BeareroAuthorization: tokenpara pasar un token. Sin embargo, si vas a pasar un token web JSON (JWT), debes usarAuthorization: Bearer.
Uso de comandos curl en GitHub Actions
También puedes utilizar comandos curl en tus flujos de trabajo de GitHub Actions.
Autenticación con token de acceso
GitHub recomienda autenticarse con el GITHUB_TOKEN integrado en lugar de crear un token. Si esto no es posible, almacena el token como secreto y reemplaza GITHUB_TOKEN en el ejemplo siguiente por el nombre del secreto. Para obtener más información sobre GITHUB_TOKEN, consulta Uso de GITHUB_TOKEN para la autenticación en flujos de trabajo. Para obtener más información sobre secretos, consulta Uso de secretos en Acciones de GitHub.
En el siguiente ejemplo, reemplace HOSTNAME por el nombre de tu instancia de GitHub Enterprise Server. Reemplaza REPO-OWNER por el nombre de la cuenta propietaria del repositorio. Reemplaza REPO-NAME por el nombre del repositorio.
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"
Autenticación con una GitHub App
Si está autenticando con un GitHub App, puede crear un token de acceso de instalación dentro de su flujo de trabajo.
-
Almacena el id. de tu GitHub App como una variable de configuración. En el ejemplo siguiente, reemplaza
APP_IDpor el nombre de la variable de configuración. Puedes encontrar tu ID de app en la página de ajustes de tu app o mediante la API de la misma. Para más información, consulta Puntos de conexión de la API de REST para GitHub Apps. Para obtener más información sobre las variables de configuración, consulta Almacenamiento de información en variables. -
Generar una llave privada para tu app. Almacena el contenido del archivo resultante como un secreto. (Almacena todo el contenido del archivo, incluido el contenido de
-----BEGIN RSA PRIVATE KEY-----y-----END RSA PRIVATE KEY-----). En el siguiente ejemplo, reemplazaAPP_PEMpor el nombre del secreto. Para más información, consulta Administración de claves privadas para aplicaciones de GitHub. Para obtener más información sobre cómo almacenar secretos, consulta Uso de secretos en Acciones de GitHub. -
Agrega un paso para generar un token y use ese token en lugar de
GITHUB_TOKEN. Ten en cuenta que este token expirará después de 60 minutos. En el siguiente ejemplo, reemplazaHOSTNAMEpor el nombre de tu instancia de GitHub Enterprise Server. ReemplazaREPO-OWNERpor el nombre de la cuenta propietaria del repositorio. ReemplazaREPO-NAMEpor el nombre del repositorio.YAML on: workflow_dispatch: jobs: use_api: runs-on: ubuntu-latest steps: - name: Generate token id: generate-token uses: actions/create-github-app-token@v2 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 "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@v2 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 "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer $GH_TOKEN"
Pasos siguientes
Para obtener más información, consulta Introducción a la API REST.