Apidog

올인원 협업 API 개발 플랫폼

API 설계

API 문서

API 디버깅

API 모킹

API 자동화 테스트

GitHub API에 프로그래매틱하게 상호작용하는 방법: Node.js 개발자를 위한 가이드

Node.js와 Express를 사용하여 GitHub API의 힘을 활용하는 방법을 배우세요! 이 가이드는 Express 서버 설정, GitHub 사용자 프로필 및 저장소를 가져오는 라우트 생성, 인증된 요청을 쉽게 만드는 방법을 안내합니다.

Young-jae

Young-jae

Updated on December 20, 2024

GitHub는 전 세계 개발자들에게 필수적인 플랫폼으로, 협업, 코드 공유 및 버전 관리를 위한 공간을 제공합니다. GitHub의 웹 인터페이스는 강력한 기능을 제공하지만, GitHub와 프로그래밍 방식으로 상호작용하고 싶은 여러 상황이 있습니다. 이때 GitHub API가 필요합니다.

GitHub API는 개발자가 작업 흐름을 자동화하고, 데이터를 검색하며, GitHub의 강력한 기능을 애플리케이션에 직접 통합할 수 있도록 합니다. 사용자 정보를 가져오거나, 리포지토리를 나열하거나, 이슈 및 풀 리퀘스트를 관리하려는 경우, GitHub API는 GitHub와 프로그래밍 방식으로 상호작용할 수 있는 유연하고 효율적인 방법을 제공합니다. 이 가이드에서는 이를 사용하는 방법을 배워보겠습니다!

사전 요구사항

Node.js와 함께 GitHub API를 사용하기 전에 준비해야 할 몇 가지 사전 요구사항이 있습니다. 이 섹션에서는 이 가이드를 따라가는 데 필요한 기본 요구사항과 지식에 대해 설명합니다.

1. JavaScript 및 Node.js에 대한 기본 지식

Node.js와 함께 GitHub API를 효과적으로 사용하려면 JavaScript에 대한 기본적인 이해가 필요합니다. 특히 비동기 프로그래밍 및 프로미스에 대한 이해는 HTTP 요청을 수행할 때 자주 사용되므로 필수적입니다. 프로젝트를 설정하고 종속성을 설치하는 것 등을 포함한 Node.js에 대한 친숙함도 중요합니다.

2. GitHub 계정

GitHub API에 접근하려면 GitHub 계정이 필요합니다. 계정이 없다면 GitHub에서 무료로 가입할 수 있습니다. 또한, 요청을 인증하기 위해 개인 액세스 토큰을 생성해야 합니다. 이 토큰을 생성하는 방법은 이후 섹션에서 다룰 것입니다.

3. 시스템에 Node.js 설치

컴퓨터에 Node.js가 설치되어 있는지 확인하십시오. 아직 설치하지 않은 경우 Node.js 공식 웹사이트에서 최신 버전을 다운로드할 수 있습니다. 이 튜토리얼은 Node.js를 사용할 것이므로, 이를 설치하는 것이 코드 예제를 실행하는 데 중요합니다.

4. RESTful API에 대한 기본 이해

GitHub API는 RESTful API이므로, REST API가 작동하는 방식을 기본적으로 이해하는 것이 유용합니다. 여기에는 HTTP 메서드(GET, POST, PUT, DELETE), 상태 코드 및 JSON 응답을 처리하는 방법을 이해하는 것이 포함됩니다.

5. 코드 편집기

Visual Studio Code, Sublime Text 또는 Atom과 같은 코드 편집기 또는 통합 개발 환경(IDE)은 효율적으로 코드를 작성하고 관리할 수 있도록 도와줍니다. 이 튜토리얼에서는 편한 코드 편집기를 사용하면 됩니다.

환경 설정하기

GitHub API에 요청을 시작하기 전에 개발 환경을 설정해야 합니다. 이 섹션에서는 Node.js를 설정하고, 새 프로젝트를 초기화하고, 필요한 라이브러리를 설치하는 단계에 대해 설명합니다.

1단계: Node.js 설치

아직 Node.js를 설치하지 않았다면, Node.js 공식 웹사이트에서 최신 버전을 다운로드하십시오. 운영 체제에 맞는 설치 지침을 따르십시오. Node.js가 올바르게 설치되었는지 확인하려면 터미널이나 명령 프롬프트를 열고 다음을 실행하십시오:

node -v

이 명령은 당신의 컴퓨터에 설치된 Node.js의 버전 번호를 표시해야 합니다.

2단계: 새로운 Node.js 프로젝트 초기화

다음으로, 프로젝트를 위한 새로운 디렉토리를 만들고 npm(노드 패키지 관리자)로 초기화합니다. 터미널을 열고 다음 명령을 실행하십시오:

mkdir github-api-tutorial
cd github-api-tutorial
npm init -y

npm init -y 명령은 프로젝트의 종속성을 관리하는 데 필요한 기본 설정으로 package.json 파일을 생성합니다.

3단계: 필요한 라이브러리 설치

GitHub API와 상호작용하기 위해 express와 HTTP 클라이언트 라이브러리 모두 필요합니다. 이 튜토리얼에서는 Node.js용 프로미스 기반 HTTP 클라이언트인 axios를 사용할 것입니다. 다음 명령을 실행하여 axios를 설치하십시오:

npm install express axios

또한 환경 변수를 안전하게 관리하기 위해 dotenv가 필요할 수 있습니다. 이 패키지는 .env 파일에서 환경 변수를 process.env로 로드할 수 있게 하여 API 토큰과 같은 민감한 정보를 저장하는 데 유용합니다. 다음 명령을 실행하여 dotenv를 설치하십시오:

npm install dotenv

4단계: .env 파일 생성

프로젝트 디렉토리의 루트에 있는 .env 파일을 생성하여 GitHub 개인 액세스 토큰을 저장합니다. 이 파일은 민감한 정보를 안전하게 유지하기 위해 버전 관리에 커밋되어서는 안 됩니다.

GITHUB_TOKEN=your_personal_access_token_here

your_personal_access_token_here를 실제 GitHub 개인 액세스 토큰으로 교체하십시오. 이 토큰을 생성하는 방법은 이후 섹션에서 다룰 것입니다.

5단계: 프로젝트 구조 설정

프로젝트의 루트 디렉토리에 index.js라는 새 파일을 만듭니다. 이 파일은 Node.js 애플리케이션의 주요 진입점 역할을 할 것입니다.

프로젝트를 확장할 계획이라면 기본 폴더 구조를 설정할 수도 있습니다. 간단한 구조는 다음과 같을 수 있습니다:

github-api-tutorial/
├── node_modules/
├── .env
├── index.js
├── package.json
└── package-lock.json

GitHub 개인 액세스 토큰 생성하기

인증된 엔드포인트에 접근하고 API 속도 제한을 늘리려면 GitHub 개인 액세스 토큰이 필요합니다. GitHub에는 액세스 토큰을 생성하는 방법에 대한 유용한 가이드가 있으며 아래에서 확인할 수 있습니다;

아래에도 단계가 요약되어 있으므로 쉽게 따라 할 수 있습니다 :)

  1. GitHub 계정에 로그인하고 설정으로 이동합니다.
  2. 왼쪽 사이드바에서 개발자 설정을 클릭합니다.
  3. 개인 액세스 토큰을 클릭한 다음 토큰 (클래식)을 클릭합니다.
  4. 새 토큰 생성 버튼을 클릭합니다.
  5. 토큰의 용도를 설명하는 메모를 작성합니다(예: "GitHub API 튜토리얼").
  6. 이 토큰에 부여할 범위 또는 권한을 선택합니다. 이 튜토리얼의 경우 repo (리포지토리 접근을 위해) 및 user (사용자 정보 접근을 위해)를 선택합니다. 필요에 따라 범위를 조정할 수 있습니다.
  7. 토큰 생성을 클릭합니다.
  8. 생성된 토큰을 복사하여 이전에 설명한 대로 .env 파일에 저장합니다. 참고: 이 토큰은 비밀번호처럼 취급하고 절대 공개적으로 공유하지 마십시오.

GitHub API 요청을 위한 경로가 있는 Express 애플리케이션 설정하기

GitHub 사용자의 프로필을 가져오는 경로와 리포지토리를 가져오는 두 개의 경로가 있는 기본 Express 서버를 만들어 봅시다.

다음은 귀하의 index.js 파일의 예시입니다:

// 필요한 모듈 가져오기
require('dotenv').config();
const express = require('express');
const axios = require('axios');

const app = express();

// JSON 및 URL-인코딩 데이터를 구문 분석하기 위한 미들웨어
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

// GitHub 사용자 프로필을 가져오는 경로
app.get('/user/profile', async (req, res) => {
    try {
        const response = await axios.get('https://api.github.com/user', {
            headers: {
                'Authorization': `Bearer ${process.env.GITHUB_TOKEN}`
            }
        });
        res.json(response.data);  // 사용자 프로필 데이터를 JSON 응답으로 전송
    } catch (error) {
        res.status(500).json({ error: '사용자 프로필 가져오기 에러', details: error.message });
    }
});

// GitHub 사용자 리포지토리를 가져오는 경로
app.get('/user/repos', async (req, res) => {
    const username = req.query.username || 'irorochad'; // 사용자 이름이 제공되지 않으면 기본값 'irorochad'로 설정
    try {
        const response = await axios.get(`https://api.github.com/users/${username}/repos`, {
            headers: {
                'Authorization': `Bearer ${process.env.GITHUB_TOKEN}`
            }
        });
        res.json(response.data);  // 사용자 리포지토리 데이터를 JSON 응답으로 전송
    } catch (error) {
        res.status(500).json({ error: '사용자 리포지토리 가져오기 에러', details: error.message });
    }
});

// 서버 시작
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`서버가 http://localhost:${PORT}에서 실행되고 있습니다.`);
});
컨트롤러를 사용하여 더 읽기 쉽게 만들 수도 있습니다.

코드 설명:

필요한 모듈 가져오기:

  • dotenv를 가져와 .env 파일에서 환경 변수를 로드하고, express를 가져와 서버를 생성하며, axios를 가져와 GitHub API에 HTTP 요청을 합니다.

미들웨어 설정:

  • express.json()express.urlencoded() 미들웨어는 각각 JSON 페이로드와 URL-인코딩된 데이터를 구문 분석하는 데 사용됩니다.

경로 생성:

  • GET /user/profile: 이 경로는 인증된 GitHub 사용자의 프로필을 axios 라이브러리를 사용하여 가져옵니다. 프로필 데이터는 JSON 응답으로 반환됩니다.
  • GET /user/repos: 이 경로는 지정된 GitHub 사용자의 공개 리포지토리를 가져옵니다. 사용자 이름은 쿼리 매개변수로 제공됩니다(예: /user/repos?username=irorochad). 사용자 이름이 지정되지 않은 경우 기본값은 'irorochad'입니다.

오류 처리:

  • API 요청 중 오류가 발생하면 서버는 500 상태 코드와 오류 세부 정보가 포함된 JSON 객체로 응답합니다.

서버 시작:

  • 서버는 지정된 포트에서 수신 대기하며(환경 변수에 설정되어 있지 않으면 기본 3000으로 설정), 시작할 때 메시지를 로그합니다.

3. .env 파일 업데이트하기

귀하의 .env 파일이 다음 내용을 포함하고 있는지 확인하십시오:

GITHUB_TOKEN=your_personal_access_token_here
PORT=3000

your_personal_access_token_here를 실제 GitHub 개인 액세스 토큰으로 교체하십시오.

4. 애플리케이션 실행하기

Express 애플리케이션을 실행하려면 다음 명령을 사용하십시오:

node index.js

귀하의 서버는 이제 http://localhost:3000에서 실행되고 있으며, 이젠 엔드포인트를 테스트할 시간입니다!!!

  • 사용자 프로필 가져오기: http://localhost:3000/user/profile를 방문하여 인증된 사용자의 프로필을 가져옵니다.
  • 사용자 리포지토리 가져오기: http://localhost:3000/user/repos?username=<GitHubUsername>를 방문하여 사용자의 리포지토리를 가져옵니다(여기서 <GitHubUsername>는 원하는 GitHub 사용자 이름으로 교체합니다).

Apidog을 사용한 엔드포인트 테스트

Apidog의 홈페이지

Apidog는 강력한 문서화, 자동화된 테스트 및 실시간 모니터링을 제공하여 API 보안을 강화합니다. Apidog은 또한 GDPR 및 HIPAA와 같은 산업 표준 준수를 지원하여 귀하의 API가 사용자 데이터를 효과적으로 보호하도록 돕습니다.

또한, Apidog은 팀 협업을 지원하여 보안 중심의 개발 환경을 조성합니다. Apidog을 통합함으로써 안전하고 신뢰할 수 있는 규정 준수 API를 구축할 수 있으며, 다양한 보안 위협으로부터 데이터를 보호할 수 있습니다.

버튼

Apidog이나 웹 버전이 설치되면 새 프로젝트를 생성하고 첫 번째 요청을 보낼 수 있습니다.

사용자 가져오기 엔드포인트 테스트:

이 엔드포인트를 호출하기 전에, Apidog에 이 엔드포인트가 액세스 토큰을 필요로 한다고 알려야 하며, 요청을 호출할 수 있도록 액세스 토큰을 Apidog에 제공해야 합니다.

요청 페이지의 인증 섹션으로 이동하여 아래와 같이 필요한 필드에 토큰을 입력합니다;

사용자 가져오기 엔드포인트

위의 스크린샷에서 볼 수 있듯이, 사용자 가져오기 엔드포인트가 예상대로 잘 작동하고 있는 이유는 서버가 실행 중이며, 액세스 토큰을 Apidog에 전달했기 때문입니다. 액세스 토큰이 없으면 요청은 실패하며 그 요청에 대한 응답을 볼 수 없습니다.

리포지토리 가져오기 엔드포인트 테스트:

리포지토리 가져오기 엔드포인트 결과

사용자 가져오기 엔드포인트와 마찬가지로 리포지토리 가져오기 엔드포인트도 호출하기 위해 액세스 토큰이 필요합니다.

결론

Node.js 애플리케이션과 GitHub API를 통합하면 작업 흐름을 자동화하거나 데이터를 분석하거나 GitHub의 강력한 기능으로 애플리케이션을 향상시키려는 개발자들에게 많은 가능성을 열어줍니다. 이 가이드에서는 Express 서버를 설정하고 GitHub에서 사용자 프로필 정보와 리포지토리를 가져오는 경로를 생성하는 과정을 살펴보았습니다.

설명된 단계를 따르면 Node.js와 Express를 사용하여 GitHub API와 상호작용하는 방법에 대한 기초적인 이해를 얻게 됩니다. 이 기초를 바탕으로 이슈 관리, 풀 리퀘스트 제공 등 다양한 엔드포인트를 탐색하기 위해 더 많은 경로를 추가하여 쉽게 확장할 수 있습니다.

GitHub Copilot 무료: 어떻게 시작하나요?튜토리얼

GitHub Copilot 무료: 어떻게 시작하나요?

GitHub Copilot 무료 사용법을 알아보세요. 이 AI 기반 코딩 도우미에 대한 이 가이드는 VS Code와 JetBrains와 같은 인기 IDE의 설정 단계를 다루며, 무료로 스마트한 코드 제안 및 완성을 통해 생산성을 높일 수 있도록 도와줍니다!

Young-jae

December 19, 2024

API 요청 최적화를 위한 ModHeader Chrome 확장 프로그램 사용 방법튜토리얼

API 요청 최적화를 위한 ModHeader Chrome 확장 프로그램 사용 방법

이 포괄적인 가이드에서 ModHeader Chrome 확장을 사용한 효과적인 API 테스트를 위한 실용적인 팁과 모범 사례를 배워보세요.

Young-jae

December 19, 2024

2025년에 HTTPie를 사용하는 방법은?튜토리얼

2025년에 HTTPie를 사용하는 방법은?

HTTPie는 HTTP 서버 및 API와의 상호작용을 간소화하는 명령줄 도구입니다. 2024년에 HTTPie를 사용하여 요청을 보내고, 파일을 업로드하며, 세션을 관리하는 방법을 배우세요.

Young-jae

December 18, 2024