Skip to main content

GitHub REST API에 대한 빠른 시작

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

소개

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

명령줄에서 GitHub CLI 사용

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

  1. macOS, Windows 또는 Linux에 GitHub CLI를 설치합니다. 자세한 내용은 GitHub CLI 리포지토리의 설치를 참조하세요.

  2. GitHub에 인증하려면 터미널에서 다음 명령을 실행합니다.

    gh auth login
    
  3. 인증하려는 위치를 선택합니다.

    • GitHub.com에서 GitHub에 액세스하는 경우 GitHub.com 을 선택합니다.
    • 다른 도메인에서 GitHub에 액세스하는 경우 Other를 선택한 다음, 호스트 이름(예: octocorp.ghe.com)을 입력합니다.
  4. 화면에 표시되는 나머지 메시지를 따릅니다.

    GitHub CLI은(는) Git 작업의 기본 프로토콜로 HTTPS가 선택된 경우 자동으로 Git 자격 증명을 저장하고 GitHub 자격 증명으로 Git에 인증할지 묻는 프롬프트에 “예”라고 대답합니다. 이는 별도의 자격 증명 관리자를 설정하거나 SSH를 사용하지 않고도 git push, git pull 등의 Git 명령을 사용할 수 있으므로 유용할 수 있습니다.

  5. GitHub CLI api 하위 명령을 사용하여 요청하고 그 뒤에 경로를 요청합니다. --method 또는 -X 플래그를 사용하여 메서드를 지정합니다. 자세한 내용은 GitHub CLI api 설명서를 참조하세요.

    이 예제에서는 GET 메서드와 /octocat 경로를 사용하는 "Octocat 가져오기" 엔드포인트에 요청합니다. 이 엔드포인트에 대한 전체 참조 설명서는 메타 데이터에 대한 REST API 엔드포인트을(를) 참조하세요.

    Shell
    gh api /octocat --method GET
    

GitHub Actions에서 GitHub CLI 사용

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

액세스 토큰을 사용하여 인증

          `gh auth login` 명령을 사용하는 대신 액세스 토큰을 `GH_TOKEN`이라는 환경 변수로 전달합니다. GitHub에서는 토큰을 만드는 대신 기본 제공 `GITHUB_TOKEN`을 사용하는 것이 좋습니다. 가능하지 않은 경우 토큰을 비밀로 저장하고 아래 예제의 `GITHUB_TOKEN`을 비밀의 이름으로 바꿉니다. 
          `GITHUB_TOKEN`에 대한 자세한 내용은 [AUTOTITLE](/actions/security-guides/automatic-token-authentication)을(를) 참조하세요. 비밀에 대한 자세한 내용은 [AUTOTITLE](/actions/security-guides/encrypted-secrets)을(를) 참조하세요.

다음 예제 워크플로에서는 리포지토리 이슈 나열 엔드포인트를 사용하고 octocat/Spoon-Knife 리포지토리에서 문제 목록을 요청합니다.

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

GitHub App를 사용하여 인증합니다.

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

  1. GitHub App의 ID를 구성 변수로 저장합니다. 다음 예에서 APP_ID를 구성 변수의 이름으로 바꿉니다. 앱의 설정 페이지 또는 API를 통해 앱 ID를 찾을 수 있습니다. 자세한 내용은 GitHub Apps에 대한 REST API 엔드포인트을(를) 참조하세요. 구성 변수에 대한 자세한 정보는 변수에 정보 저장을(를) 참조하세요.

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

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

    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 https://api.github.com/repos/octocat/Spoon-Knife/issues
    

Octokit.js 사용

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

  1. 액세스 토큰을 만듭니다. 예를 들어 personal access token 또는 GitHub App 사용자 액세스 토큰을 만듭니다. 이 토큰을 사용하여 요청을 인증하므로 해당 엔드포인트에 액세스하는 데 필요한 범위 또는 권한을 부여해야 합니다. 자세한 내용은 REST API에 인증 또는 GitHub 앱에 대한 사용자 인증 및 권한 부여 참조하세요.

    경고

    액세스 토큰을 암호와 같이 취급하고

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

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

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

  2.        `octokit`를 설치합니다. 예: `npm install octokit`. 
           `octokit`를 설치 또는 로드하는 다른 방법은 [Octokit.js 추가 정보](https://github.com/octokit/octokit.js/#readme)를 참조하세요.
    
  3. 스크립트로 octokit를 가져옵니다. 예: import { Octokit } from "octokit";. octokit를 가져오는 다른 방법은 the Octokit.js 추가 정보를 참조하세요.

  4. 토큰으로 Octokit의 인스턴스를 생성합니다. YOUR-TOKEN을 사용자 토큰으로 바꿉니다.

    JavaScript
    const octokit = new Octokit({ 
      auth: 'YOUR-TOKEN'
    });
    
  5.        `octokit.request`를 사용하여 요청을 실행합니다. HTTP 메서드와 경로를 첫 번째 인수로 보냅니다. 개체의 경로, 쿼리 및 본문 매개 변수를 두 번째 인수로 지정합니다. 매개 변수에 대한 자세한 정보는 [AUTOTITLE](/rest/guides/getting-started-with-the-rest-api#using-parameters)을(를) 참조하세요.
    

    예를 들어 다음 요청에서 HTTP 메서드는 GET이고, 경로는 /repos/{owner}/{repo}/issues이며, 매개 변수는 owner: "octocat"repo: "Spoon-Knife"입니다.

    JavaScript
    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_TOKEN 사용을(를) 참조하세요. 비밀에 대한 자세한 내용은 GitHub Actions에서 비밀 사용을(를) 참조하세요.

다음 예제 워크플로:

  1. 리포지토리 콘텐츠를 확인한다
  2. Node.js 설정
  3.        `octokit`를 설치합니다.
    
  4.        `GITHUB_TOKEN`의 값을 `TOKEN`이라는 환경 변수로 저장하고, 이 환경 변수에 `.github/actions-scripts/use-the-api.mjs`으로 액세스할 수 있는 `process.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 }}

다음은 파일 경로가 .github/actions-scripts/use-the-api.mjs인 JavaScript 스크립트 예입니다.

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를 사용하여 인증합니다.

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

  1. GitHub App의 ID를 구성 변수로 저장합니다. 다음 예에서 APP_ID를 구성 변수의 이름으로 바꿉니다. 앱의 설정 페이지 또는 앱 API를 통해 앱 ID를 찾을 수 있습니다. 자세한 내용은 GitHub Apps에 대한 REST API 엔드포인트을(를) 참조하세요. 구성 변수에 대한 자세한 정보는 변수에 정보 저장을(를) 참조하세요.

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

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

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

명령줄에서 curl 사용

참고

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

  1.        `curl`이 컴퓨터에 아직 설치되어 있지 않은 경우 설치합니다. 
           `curl`이 설치되어 있는지 확인하려면 명령줄에서 `curl --version`을 실행합니다. 
           `curl` 버전에 대한 정보가 출력되면 `curl`이(가) 설치된 것입니다. 
           `command not found: curl`과 유사한 메시지가 표시되면 `curl`을 다운로드하여 설치해야 합니다. 자세한 내용은 [cURL 프로젝트 다운로드 페이지](https://curl.se/download.html)를 참조하세요.
    
  2. 액세스 토큰을 만듭니다. 예를 들어 personal access token 또는 GitHub App 사용자 액세스 토큰을 만듭니다. 이 토큰을 사용하여 요청을 인증하므로 해당 엔드포인트에 액세스하는 데 필요한 범위 또는 권한을 부여해야 합니다. 자세한 내용은 REST API에 인증을(를) 참조하세요.

    경고

    액세스 토큰을 암호와 같이 취급하고

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

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

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

  3.        `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"
    

    참고

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

GitHub Actions에서 curl 명령 사용

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

액세스 토큰을 사용하여 인증

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

YAML
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을 사용하여 인증하는 경우 워크플로 내에서 설치 액세스 토큰을 만들 수 있습니다.

  1. GitHub App의 ID를 구성 변수로 저장합니다. 다음 예에서 APP_ID를 구성 변수의 이름으로 바꿉니다. 앱의 설정 페이지 또는 앱 API를 통해 앱 ID를 찾을 수 있습니다. 자세한 내용은 GitHub Apps에 대한 REST API 엔드포인트을(를) 참조하세요. 구성 변수에 대한 자세한 정보는 변수에 정보 저장을(를) 참조하세요.

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

  3. 토큰을 생성하는 단계를 추가하고 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@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 "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
              --header "Accept: application/vnd.github+json" \
              --header "Authorization: Bearer $GH_TOKEN"
    
    

다음 단계

자세한 내용은 REST API 시작을 참조하세요.