이 문서에서는 GitHub CLI, JavaScript 또는 cURL을 사용하여 GitHub REST API를 빠르게 시작하는 방법을 설명합니다. 자세한 내용은 “REST API 시작”을 참조하세요.
GitHub CLI를 사용하여 시작
명령줄에서 GitHub CLI 사용
GitHub CLI는 명령줄에서 GitHub REST API를 사용하는 가장 쉬운 방법입니다.
-
아직 설치하지 않은 경우 GitHub CLI를 설치합니다. 설치 지침은 GitHub CLI 리포지토리를 참조하세요.
-
auth login하위 명령을 사용하여 GitHub CLI에 인증합니다. 자세한 내용은 GitHub CLIauth login설명서를 참조하세요.gh auth login -
api하위 명령을 사용하여 API 요청을 만듭니다. 자세한 내용은 GitHub CLIapi설명서를 참조하세요.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을 사용하여 인증하는 경우 워크플로 내에서 설치 액세스 토큰을 만들 수 있습니다.
- GitHub App의 ID를 비밀로 저장합니다. 다음 예에서
APP_ID을 비밀의 이름으로 바꿉니다. 앱의 설정 페이지 또는 API를 통해 앱 ID를 찾을 수 있습니다. 자세한 내용은 REST API 설명서의 "앱"을 참조하세요. 비밀에 대한 자세한 내용은 “암호화된 비밀”을 참조하세요. - 앱에 대한 프라이빗 키를 생성합니다. 결과 파일의 내용을 비밀로 저장합니다. (
-----BEGIN RSA PRIVATE KEY-----및-----END RSA PRIVATE KEY-----를 포함하여 파일의 전체 내용을 저장합니다.) 다음 예에서APP_PEM을 비밀의 이름으로 바꿉니다. 자세한 내용은 “GitHub Apps에서 인증”을 참조하세요. - 토큰을 생성하는 단계를 추가하고
GITHUB_TOKEN대신 해당 토큰을 사용합니다. 이 토큰은 60분 후에 만료됩니다. 예를 들면 다음과 같습니다.
# 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
# 작업은 타사에서 제공하며
# 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
# 참조하세요.
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와 상호 작용할 수 있습니다. 자세한 내용은 Octokit.js 추가 정보를 참조하세요.
Octokit.js 사용
-
액세스 토큰을 만듭니다. 예를 들어 personal access token 또는 GitHub App 사용자-서버 액세스 토큰을 만듭니다. 자세한 내용은 "personal access token" 또는 "GitHub 앱에 대한 사용자 식별 및 권한 부여"를 참조하세요.
경고: 액세스 토큰을 암호와 같이 취급하세요.
토큰을 안전하게 유지하기 위해 비밀로 저장하고 GitHub Actions를 통해 스크립트를 실행할 수 있습니다. 자세한 내용은 “GitHub Actions에서 Octokit.js 사용” 섹션을 참조하세요.
또한 토큰을 Codespaces 비밀로 저장하고 Codespaces에서 스크립트를 실행할 수도 있습니다. 자세한 내용은 “codespace에 대한 암호화된 비밀 관리”를 참조하세요.
이러한 옵션을 사용할 수 없는 경우 1Password CLI와 같은 다른 서비스를 사용하여 토큰을 안전하게 저장하는 것이 좋습니다.
-
octokit설치 예들 들어npm install octokit입니다.octokit를 설치 또는 로드하는 다른 방법은 Octokit.js 추가 정보를 참조하세요. -
스크립트로
octokit를 가져옵니다. 예들 들어import { Octokit } from "octokit";입니다.octokit를 가져오는 다른 방법은 the Octokit.js 추가 정보를 참조하세요. -
토큰을 사용하여
Octokit의 인스턴스를 만듭니다.YOUR-TOKEN을 실제 토큰으로 바꿉니다.const octokit = new Octokit({ auth: 'YOUR-TOKEN' }); -
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에 대한 자세한 내용은 “자동 토큰 인증”을 참조하세요. 비밀에 대한 자세한 내용은 “암호화된 비밀”을 참조하세요.
다음 예제 워크플로:
- 리포지토리 콘텐츠 체크 아웃
- Node.js 설정
octokit를 설치합니다.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을 사용하여 인증하는 경우 워크플로 내에서 설치 액세스 토큰을 만들 수 있습니다.
- GitHub App의 ID를 비밀로 저장합니다. 다음 예에서
APP_ID을 비밀의 이름으로 바꿉니다. 앱의 설정 페이지 또는 앱 API를 통해 앱 ID를 찾을 수 있습니다. 자세한 내용은 “앱”을 참조하세요. 비밀에 대한 자세한 내용은 “암호화된 비밀”을 참조하세요. - 앱에 대한 프라이빗 키를 생성합니다. 결과 파일의 내용을 비밀로 저장합니다. (
-----BEGIN RSA PRIVATE KEY-----및-----END RSA PRIVATE KEY-----를 포함하여 파일의 전체 내용을 저장합니다.) 다음 예에서APP_PEM을 비밀의 이름으로 바꿉니다. 자세한 내용은 “GitHub Apps에서 인증”을 참조하세요. - 토큰을 생성하는 단계를 추가하고
GITHUB_TOKEN대신 해당 토큰을 사용합니다. 이 토큰은 60분 후에 만료됩니다. 예를 들면 다음과 같습니다.
# 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
# 작업은 타사에서 제공하며
# 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
# 참조하세요.
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 버전을 참조하세요.
-
cURL이 컴퓨터에 아직 설치되어 있지 않은 경우 cURL을 설치합니다. cURL이 설치되어 있는지 확인하려면 명령줄에서
curl --version을 실행합니다. 출력이 cURL 버전에 대한 정보인 경우 cURL이 설치된 것입니다.command not found: curl와 유사한 메시지가 표시되면 cURL을 다운로드하여 설치해야 합니다. 자세한 내용은 cURL 프로젝트 다운로드 페이지를 참조하세요. -
액세스 토큰을 만듭니다. 예를 들어 personal access token 또는 GitHub App 사용자-서버 액세스 토큰을 만듭니다. 자세한 내용은 "personal access token" 또는 "GitHub 앱에 대한 사용자 식별 및 권한 부여"를 참조하세요.
경고: 액세스 토큰을 암호와 같이 취급하세요.
토큰을 안전하게 유지하기 위해 토큰을 Codespaces 비밀로 저장하고 Codespaces를 통해 명령줄을 사용할 수 있습니다. 자세한 내용은 “codespace에 대한 암호화된 비밀 관리”를 참조하세요.
cURL 대신 GitHub CLI를 사용할 수도 있습니다. GitHub CLI가 대신 인증을 처리합니다. 자세한 내용은 이 페이지의 GitHub CLI 버전을 참조하세요.
이러한 옵션을 사용할 수 없는 경우 1Password CLI와 같은 다른 서비스를 사용하여 토큰을 안전하게 저장하는 것이 좋습니다.
-
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을 사용하여 인증하는 경우 워크플로 내에서 설치 액세스 토큰을 만들 수 있습니다.
- GitHub App의 ID를 비밀로 저장합니다. 다음 예에서
APP_ID을 비밀의 이름으로 바꿉니다. 앱의 설정 페이지 또는 앱 API를 통해 앱 ID를 찾을 수 있습니다. 자세한 내용은 “앱”을 참조하세요. 비밀에 대한 자세한 내용은 “암호화된 비밀”을 참조하세요. - 앱에 대한 프라이빗 키를 생성합니다. 결과 파일의 내용을 비밀로 저장합니다. (
-----BEGIN RSA PRIVATE KEY-----및-----END RSA PRIVATE KEY-----를 포함하여 파일의 전체 내용을 저장합니다.) 다음 예에서APP_PEM을 비밀의 이름으로 바꿉니다. 자세한 내용은 “GitHub Apps에서 인증”을 참조하세요. - 토큰을 생성하는 단계를 추가하고
GITHUB_TOKEN대신 해당 토큰을 사용합니다. 이 토큰은 60분 후에 만료됩니다. 예를 들면 다음과 같습니다.
# 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
# 작업은 타사에서 제공하며
# 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
# 참조하세요.
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 시작”을 참조하세요.