Skip to main content

GitHub REST API에 대한 빠른 시작

GitHub REST API를 시작하는 방법을 알아봅니다.

이 문서에서는 GitHub CLI, JavaScript 또는 curl를 사용하여 GitHub REST API를 빠르게 시작하는 방법을 설명합니다. 자세한 내용은 “REST API 시작”을 참조하세요.

GitHub CLI를 사용하여 시작

명령줄에서 GitHub CLI 사용

GitHub CLI는 명령줄에서 GitHub REST API를 사용하는 가장 쉬운 방법입니다.

  1. 아직 설치하지 않은 경우 GitHub CLI를 설치합니다. 설치 지침은 GitHub CLI 리포지토리를 참조하세요.

  2. auth login 하위 명령을 사용하여 GitHub CLI에 인증합니다. 자세한 내용은 GitHub CLI auth login 설명서를 참조하세요.

    gh auth login
  3. api 하위 명령을 사용하여 API 요청을 만듭니다. 자세한 내용은 GitHub CLI api 설명서를 참조하세요.

    gh api repos/octocat/Spoon-Knife/issues

GitHub Actions에서 GitHub CLI 사용

GitHub Actions 워크플로에서 GitHub CLI를 사용할 수도 있습니다. 자세한 내용은 “워크플로에서 GitHub CLI 사용”을 참조하세요.

gh auth login 명령을 사용하는 대신 액세스 토큰을 GH_TOKEN이라는 환경 변수로 전달합니다. GitHub에서는 토큰을 만드는 대신 기본 제공 GITHUB_TOKEN을 사용하는 것이 좋습니다. 가능하지 않은 경우 토큰을 비밀로 저장하고 아래 예제의 GITHUB_TOKEN을 비밀의 이름으로 바꿉니다. GITHUB_TOKEN에 대한 자세한 내용은 “자동 토큰 인증”을 참조하세요. 비밀에 대한 자세한 내용은 “암호화된 비밀”을 참조하세요.

on:
  workflow_dispatch:
jobs:
  use_api:
    runs-on: ubuntu-latest
    permissions:
      issues: read
    steps:
      - env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          gh api repos/octocat/Spoon-Knife/issues

GitHub App을 사용하여 인증하는 경우 워크플로 내에서 설치 액세스 토큰을 만들 수 있습니다.

  1. GitHub App의 ID를 비밀로 저장합니다. 다음 예에서 APP_ID을 비밀의 이름으로 바꿉니다. 앱의 설정 페이지 또는 API를 통해 앱 ID를 찾을 수 있습니다. 자세한 내용은 REST API 설명서의 ""을 참조하세요. 비밀에 대한 자세한 내용은 “암호화된 비밀”을 참조하세요.
  2. 앱에 대한 프라이빗 키를 생성합니다. 결과 파일의 내용을 비밀로 저장합니다. (-----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----를 포함하여 파일의 전체 내용을 저장합니다.) 다음 예에서 APP_PEM을 비밀의 이름으로 바꿉니다. 자세한 내용은 “GitHub Apps에서 인증”을 참조하세요.
  3. 토큰을 생성하는 단계를 추가하고 GITHUB_TOKEN 대신 해당 토큰을 사용합니다. 이 토큰은 60분 후에 만료됩니다. 예를 들면 다음과 같습니다.
# <a name="this-workflow-uses-actions-that-are-not-certified-by-github"></a>이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
# <a name="they-are-provided-by-a-third-party-and-are-governed-by"></a>작업은 타사에서 제공하며
# <a name="separate-terms-of-service-privacy-policy-and-support"></a>별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
# <a name="documentation"></a>참조하세요.

on:
  workflow_dispatch:
jobs:
  track_pr:
    runs-on: ubuntu-latest
    steps:
      - name: Generate token
        id: generate_token
        uses: tibdex/github-app-token@36464acb844fc53b9b8b2401da68844f6b05ebb0
        with:
          app_id: ${{ secrets.APP_ID }}
          private_key: ${{ secrets.APP_PEM }}

      - name: Use API
        env:
          GH_TOKEN: ${{ steps.generate_token.outputs.token }}
        run: |
          gh api repos/octocat/Spoon-Knife/issues

JavaScript 사용 시작

Octokit.js를 사용하여 JavaScript 스크립트에서 GitHub REST API와 상호 작용할 수 있습니다. 자세한 내용은 "REST API 및 JavaScript를 사용한 스크립팅"을 참조하세요.

Octokit.js 사용

  1. 액세스 토큰을 만듭니다. 예를 들어 personal access token 또는 GitHub App 사용자-서버 액세스 토큰을 만듭니다. 자세한 내용은 "personal access token" 또는 "GitHub 앱에 대한 사용자 식별 및 권한 부여"를 참조하세요.

    경고: 액세스 토큰을 암호와 같이 취급하세요.

    토큰을 안전하게 유지하기 위해 비밀로 저장하고 GitHub Actions를 통해 스크립트를 실행할 수 있습니다. 자세한 내용은 “GitHub Actions에서 Octokit.js 사용” 섹션을 참조하세요.

    또한 토큰을 Codespaces 비밀로 저장하고 Codespaces에서 스크립트를 실행할 수도 있습니다. 자세한 내용은 “codespace에 대한 암호화된 비밀 관리”를 참조하세요.

    이러한 옵션을 사용할 수 없는 경우 1Password CLI와 같은 다른 서비스를 사용하여 토큰을 안전하게 저장하는 것이 좋습니다.

  2. octokit설치 예들 들어 npm install octokit입니다. octokit를 설치 또는 로드하는 다른 방법은 Octokit.js 추가 정보를 참조하세요.

  3. 스크립트로 octokit를 가져옵니다. 예들 들어 import { Octokit } from "octokit";입니다. octokit를 가져오는 다른 방법은 the Octokit.js 추가 정보를 참조하세요.

  4. 토큰을 사용하여 Octokit의 인스턴스를 만듭니다. YOUR-TOKEN을 실제 토큰으로 바꿉니다.

    const octokit = new Octokit({
      auth: 'YOUR-TOKEN'
    });
    
  5. octokit.request를 사용하여 요청을 실행합니다. HTTP 메서드와 경로를 첫 번째 인수로 보냅니다. 개체의 경로, 쿼리 및 본문 매개 변수를 두 번째 인수로 지정합니다. 예를 들어 다음 요청에서 HTTP 메서드는 GET이며, 경로는 /repos/{owner}/{repo}/issues이고 매개 변수는 owner: "octocat"repo: "Spoon-Knife"입니다.

    await octokit.request("GET /repos/{owner}/{repo}/issues", {
      owner: "octocat",
      repo: "Spoon-Knife",
    });
    

GitHub Actions에서 Octokit.js 사용

GitHub Actions 워크플로에서 JavaScript 스크립트를 실행할 수도 있습니다. 자세한 내용은 “GitHub Actions의 워크플로 구문”을 참조하세요.

GitHub에서는 토큰을 만드는 대신 기본 제공 GITHUB_TOKEN을 사용하는 것이 좋습니다. 가능하지 않은 경우 토큰을 비밀로 저장하고 아래 예제의 GITHUB_TOKEN을 비밀의 이름으로 바꿉니다. GITHUB_TOKEN에 대한 자세한 내용은 “자동 토큰 인증”을 참조하세요. 비밀에 대한 자세한 내용은 “암호화된 비밀”을 참조하세요.

다음 예제 워크플로:

  1. 리포지토리 콘텐츠 체크 아웃
  2. Node.js 설정
  3. octokit를 설치합니다.
  4. GITHUB_TOKEN의 값을 TOKEN이라는 환경 변수로 저장하고, 이 환경 변수에 process.env.TOKEN으로 액세스할 수 있는 .github/actions-scripts/use-the-api.mjs를 실행합니다.

예제 워크플로:

on:
  workflow_dispatch:
jobs:
  use_api_via_script:
    runs-on: ubuntu-latest
    permissions:
      issues: read
    steps:
      - name: Check out repo content
        uses: actions/checkout@v3

      - name: Setup Node
        uses: actions/setup-node@v3
        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 }}

JavaScript 스크립트 예제(파일 경로: .github/actions-scripts/use-the-api.mjs):

import { Octokit } from "octokit"

const octokit = new Octokit({
  auth: process.env.TOKEN
});

try {
  const result = await octokit.request("GET /repos/{owner}/{repo}/issues", {
      owner: "octocat",
      repo: "Spoon-Knife",
    });

  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}`)
}

GitHub App을 사용하여 인증하는 경우 워크플로 내에서 설치 액세스 토큰을 만들 수 있습니다.

  1. GitHub App의 ID를 비밀로 저장합니다. 다음 예에서 APP_ID을 비밀의 이름으로 바꿉니다. 앱의 설정 페이지 또는 앱 API를 통해 앱 ID를 찾을 수 있습니다. 자세한 내용은 “”을 참조하세요. 비밀에 대한 자세한 내용은 “암호화된 비밀”을 참조하세요.
  2. 앱에 대한 프라이빗 키를 생성합니다. 결과 파일의 내용을 비밀로 저장합니다. (-----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----를 포함하여 파일의 전체 내용을 저장합니다.) 다음 예에서 APP_PEM을 비밀의 이름으로 바꿉니다. 자세한 내용은 “GitHub Apps에서 인증”을 참조하세요.
  3. 토큰을 생성하는 단계를 추가하고 GITHUB_TOKEN 대신 해당 토큰을 사용합니다. 이 토큰은 60분 후에 만료됩니다. 예를 들면 다음과 같습니다.
# <a name="this-workflow-uses-actions-that-are-not-certified-by-github"></a>이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
# <a name="they-are-provided-by-a-third-party-and-are-governed-by"></a>작업은 타사에서 제공하며
# <a name="separate-terms-of-service-privacy-policy-and-support"></a>별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
# <a name="documentation"></a>참조하세요.

on:
  workflow_dispatch:
jobs:
  use_api_via_script:
    runs-on: ubuntu-latest
    steps:
      - name: Check out repo content
        uses: actions/checkout@v3

      - name: Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: '16.17.0'
          cache: npm

      - name: Install dependencies
        run: npm install octokit

      - name: Generate token
        id: generate_token
        uses: tibdex/github-app-token@36464acb844fc53b9b8b2401da68844f6b05ebb0
        with:
          app_id: ${{ secrets.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 }}

사용 시작 curl

명령줄에서 사용 curl

참고: 명령줄에서 API 요청을 만들려면 GitHub에서 인증 및 요청을 간소화하는 GitHub CLI를 사용하는 것이 좋습니다. GitHub CLI를 사용하여 REST API를 시작하는 방법에 대한 자세한 내용은 이 문서의 GitHub CLI 버전을 참조하세요.

  1. 컴퓨터에 아직 설치되지 않은 경우 설치 curl 합니다. 가 설치되어 있는지 curl 확인하려면 명령줄에서 를 실행 curl --version 합니다. 출력이 의 버전 curl에 대한 정보인 경우 설치됩니다. 와 유사한 command not found: curl메시지가 표시되면 를 다운로드하여 설치 curl해야 합니다. 자세한 내용은 curl 프로젝트 다운로드 페이지를 참조하세요.

  2. 액세스 토큰을 만듭니다. 예를 들어 personal access token 또는 GitHub App 사용자-서버 액세스 토큰을 만듭니다. 자세한 내용은 "personal access token" 또는 "GitHub 앱에 대한 사용자 식별 및 권한 부여"를 참조하세요.

    경고: 액세스 토큰을 암호와 같이 취급하세요.

    토큰을 안전하게 유지하기 위해 토큰을 Codespaces 비밀로 저장하고 Codespaces를 통해 명령줄을 사용할 수 있습니다. 자세한 내용은 “codespace에 대한 암호화된 비밀 관리”를 참조하세요.

    대신 GitHub CLI를 사용할 수도 있습니다 curl. GitHub CLI가 대신 인증을 처리합니다. 자세한 내용은 이 페이지의 GitHub CLI 버전을 참조하세요.

    이러한 옵션을 사용할 수 없는 경우 1Password CLI와 같은 다른 서비스를 사용하여 토큰을 안전하게 저장하는 것이 좋습니다.

  3. curl 명령을 사용하여 요청을 수행합니다. Authorization 헤더로 토큰을 전달합니다. 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"

    참고: 대부분의 경우 Authorization: Bearer 또는 Authorization: token을 사용하여 전달할 수 있습니다. 그러나 JWT(JSON 웹 토큰)를 전달하는 경우 Authorization: Bearer를 사용해야 합니다.

GitHub Actions에서 명령 사용 curl

GitHub Actions 워크플로에서 명령을 사용할 curl 수도 있습니다.

GitHub에서는 토큰을 만드는 대신 기본 제공 GITHUB_TOKEN을 사용하는 것이 좋습니다. 가능하지 않은 경우 토큰을 비밀로 저장하고 아래 예제의 GITHUB_TOKEN을 비밀의 이름으로 바꿉니다. GITHUB_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을 사용하여 인증하는 경우 워크플로 내에서 설치 액세스 토큰을 만들 수 있습니다.

  1. GitHub App의 ID를 비밀로 저장합니다. 다음 예에서 APP_ID을 비밀의 이름으로 바꿉니다. 앱의 설정 페이지 또는 앱 API를 통해 앱 ID를 찾을 수 있습니다. 자세한 내용은 “”을 참조하세요. 비밀에 대한 자세한 내용은 “암호화된 비밀”을 참조하세요.
  2. 앱에 대한 프라이빗 키를 생성합니다. 결과 파일의 내용을 비밀로 저장합니다. (-----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----를 포함하여 파일의 전체 내용을 저장합니다.) 다음 예에서 APP_PEM을 비밀의 이름으로 바꿉니다. 자세한 내용은 “GitHub Apps에서 인증”을 참조하세요.
  3. 토큰을 생성하는 단계를 추가하고 GITHUB_TOKEN 대신 해당 토큰을 사용합니다. 이 토큰은 60분 후에 만료됩니다. 예를 들면 다음과 같습니다.
# <a name="this-workflow-uses-actions-that-are-not-certified-by-github"></a>이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
# <a name="they-are-provided-by-a-third-party-and-are-governed-by"></a>작업은 타사에서 제공하며
# <a name="separate-terms-of-service-privacy-policy-and-support"></a>별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
# <a name="documentation"></a>참조하세요.

on:
  workflow_dispatch:
jobs:
  use_api:
    runs-on: ubuntu-latest
    steps:
      - name: Generate token
        id: generate_token
        uses: tibdex/github-app-token@36464acb844fc53b9b8b2401da68844f6b05ebb0
        with:
          app_id: ${{ secrets.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 시작”을 참조하세요.