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를 사용하는 가장 쉬운 방법입니다.

참고: 다음은 GitHub.com을 위한 예제입니다. GitHub Enterprise Server를 통해 이 예제를 사용하려면 octocat/Spoon-Knife를 인스턴스의 리포지토리로 바꿔야 합니다. 또는 인스턴스 대신 GitHub.com에 인증하도록 gh auth login 명령을 다시 실행합니다.

  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에 대한 자세한 내용은 "자동 토큰 인증"을(를) 참조하세요. 비밀에 대한 자세한 내용은 “GitHub Actions에서 비밀 사용”을(를) 참조하세요.

참고: 다음은 GitHub.com을 위한 예제 워크플로입니다. GitHub Enterprise Server를 통해 이 예제를 사용하려면 octocat/Spoon-Knife를 GitHub Enterprise Server의 리포지토리로 바꿔야 합니다.

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 설명서의 "GitHub 앱"을(를) 참조하세요. 비밀에 대한 자세한 내용은 “GitHub Actions에서 비밀 사용”을(를) 참조하세요.

  2. 앱에 대한 프라이빗 키를 생성합니다. 결과 파일의 내용을 비밀로 저장합니다. (-----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----를 포함하여 파일의 전체 내용을 저장합니다.) 다음 예에서 APP_PEM을 비밀의 이름으로 바꿉니다. 자세한 내용은 "GitHub 앱에 대한 프라이빗 키 관리"을(를) 참조하세요.

  3. 토큰을 생성하는 단계를 추가하고 GITHUB_TOKEN 대신 해당 토큰을 사용합니다. 이 토큰은 60분 후에 만료됩니다. 예시:

    
    # 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
    # 작업은 타사에서 제공하며
    # 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
    # 참조하세요.
    
    # 커밋 SHA에 작업을 고정하는 것이 좋습니다.
    # 최신 버전을 얻으려면 SHA를 업데이트해야 합니다.
    # 태그 또는 분기를 참조할 수도 있지만 경고 없이 작업이 변경될 수 있습니다.
    
    on:
      workflow_dispatch:
    jobs:
      track_pr:
        runs-on: ubuntu-latest
        steps:
          - name: Generate token
            id: generate_token
            uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
            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 사용

참고: 다음은 GitHub.com를 위한 예제입니다. GitHub Enterprise Server을(를) 사용한 예제를 사용하려면 octocat/Spoon-Knife를 인스턴스의 리포지토리로 바꿔야 합니다. 또는 baseURL을(를) 지정하지 않고 새 Octokit 인스턴스를 만들 수 있습니다.

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

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

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

    이러한 옵션을 사용할 수 없는 경우 다른 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에 대한 자세한 내용은 "자동 토큰 인증"을(를) 참조하세요. 비밀에 대한 자세한 내용은 “GitHub Actions에서 비밀 사용”을(를) 참조하세요.

참고: 다음은 GitHub.com를 위한 예제입니다. GitHub Enterprise Server을(를) 사용한 예제를 사용하려면 octocat/Spoon-Knife를 인스턴스의 리포지토리로 바꿔야 합니다. 또는 baseURL을(를) 지정하지 않고 새 Octokit 인스턴스를 만들 수 있습니다.

다음 예제 워크플로:

  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@v4

      - 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를 찾을 수 있습니다. 자세한 내용은 "GitHub 앱"을(를) 참조하세요. 비밀에 대한 자세한 내용은 “GitHub Actions에서 비밀 사용”을(를) 참조하세요.

  2. 앱에 대한 프라이빗 키를 생성합니다. 결과 파일의 내용을 비밀로 저장합니다. (-----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----를 포함하여 파일의 전체 내용을 저장합니다.) 다음 예에서 APP_PEM을 비밀의 이름으로 바꿉니다. 자세한 내용은 "GitHub 앱에 대한 프라이빗 키 관리"을(를) 참조하세요.

  3. 토큰을 생성하는 단계를 추가하고 GITHUB_TOKEN 대신 해당 토큰을 사용합니다. 이 토큰은 60분 후에 만료됩니다. 예시:

    
    # 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
    # 작업은 타사에서 제공하며
    # 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
    # 참조하세요.
    
    # 커밋 SHA에 작업을 고정하는 것이 좋습니다.
    # 최신 버전을 얻으려면 SHA를 업데이트해야 합니다.
    # 태그 또는 분기를 참조할 수도 있지만 경고 없이 작업이 변경될 수 있습니다.
    
    on:
      workflow_dispatch:
    jobs:
      use_api_via_script:
        runs-on: ubuntu-latest
        steps:
          - name: Check out repo content
            uses: actions/checkout@v4
    
          - 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@b62528385c34dbc9f38e5f4225ac829252d1ea92
            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 사용

참고:

  • 다음은 GitHub.com을 위한 예제입니다. GitHub Enterprise Server를 통해 이 예제를 사용하려면 https://api.github.comhttp(s)://HOSTNAME/api/v3로 바꾸고, HOSTNAME을 GitHub Enterprise Server 인스턴스의 호스트 이름으로 바꿔야 합니다. 또한 octocat/Spoon-Knife를 GitHub Enterprise Server의 리포지토리로 바꿔야 합니다.
  • 명령줄에서 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 Apps에 대한 사용자 식별 및 권한 부여"를 참조하세요.

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

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

    이러한 옵션을 사용할 수 없는 경우 다른 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에 대한 자세한 내용은 "자동 토큰 인증"을(를) 참조하세요. 비밀에 대한 자세한 내용은 “GitHub Actions에서 비밀 사용”을(를) 참조하세요.

참고: 다음은 GitHub.com을 위한 예제 워크플로입니다. GitHub Enterprise Server를 통해 이 예제를 사용하려는 경우 다음과 같은 차이점에 유의하세요.

  • https://api.github.comhttp(s)://HOSTNAME/api/v3로 바꾸고, HOSTNAME을 GitHub Enterprise Server 인스턴스의 호스트 이름으로 바꿔야 합니다.
  • octocat/Spoon-Knife를 GitHub Enterprise Server의 리포지토리로 바꿔야 합니다.
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를 찾을 수 있습니다. 자세한 내용은 "GitHub 앱"을(를) 참조하세요. 비밀에 대한 자세한 내용은 “GitHub Actions에서 비밀 사용”을(를) 참조하세요.

  2. 앱에 대한 프라이빗 키를 생성합니다. 결과 파일의 내용을 비밀로 저장합니다. (-----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----를 포함하여 파일의 전체 내용을 저장합니다.) 다음 예에서 APP_PEM을 비밀의 이름으로 바꿉니다. 자세한 내용은 "GitHub 앱에 대한 프라이빗 키 관리"을(를) 참조하세요.

  3. 토큰을 생성하는 단계를 추가하고 GITHUB_TOKEN 대신 해당 토큰을 사용합니다. 이 토큰은 60분 후에 만료됩니다. 예시:

    
    # 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
    # 작업은 타사에서 제공하며
    # 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
    # 참조하세요.
    
    # 커밋 SHA에 작업을 고정하는 것이 좋습니다.
    # 최신 버전을 얻으려면 SHA를 업데이트해야 합니다.
    # 태그 또는 분기를 참조할 수도 있지만 경고 없이 작업이 변경될 수 있습니다.
    
    on:
      workflow_dispatch:
    jobs:
      use_api:
        runs-on: ubuntu-latest
        steps:
          - name: Generate token
            id: generate_token
            uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
            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 시작”을 참조하세요.