GitHub REST API 사용법

2024. 10. 28. 23:30·프로젝트/GitHub Profile Viewer
728x90

1️⃣ GitHub API란?

GitHub API는 개발자들이 GitHub의 데이터를 가져와서 앱이나 웹사이트에 활용할 수 있도록 도와주는 서비스입니다.
예를 들어, 유저 프로필, 레포지토리 목록, 팔로워 수 같은 데이터를 API를 통해 얻을 수 있어요.
저는 이 프로젝트에서 유저 프로필 정보를 조회하는 API를 사용했습니다.

  • API URL 예시:
    https://api.github.com/users/{username}
    → {username} 부분에 조회하고 싶은 GitHub 유저의 이름을 넣으면 됩니다.
  • 예시:
    https://api.github.com/users/kimjusnu

2️⃣ GitHub API 연결 준비

GitHub API는 기본적으로 비인증 요청도 지원합니다.
하지만 비인증 요청은 시간당 60회로 제한되어 있어요.

더 많은 요청을 처리하려면 OAuth 인증을 사용해야 하지만, 이번 프로젝트에서는 간단하게 비인증 API를 활용했습니다.


3️⃣ GitHub API 호출하기 (page.tsx 파일)

  • 여기서 우리는 fetch라는 브라우저 내장 함수를 사용해 GitHub API에 요청을 보냅니다. 이 코드를 따라 하면 유저 이름을 입력하고, 해당 유저의 정보를 화면에 표시할 수 있어요.
const fetchUser = async (username) => {
  setLoading(true); // 로딩 상태 설정

  try {
    const response = await fetch(`https://api.github.com/users/${username}`);
    if (!response.ok) throw new Error('User not found'); // 에러 처리

    const data = await response.json(); // 데이터 파싱
    setUser(data); // 상태 업데이트
    setError(null); // 에러 초기화
  } catch (err) {
    setError(err.message); // 에러 저장
    setUser(null); // 유저 정보 초기화
  } finally {
    setLoading(false); // 로딩 종료
  }
};

4️⃣ fetch란?

fetch는 웹사이트가 다른 서버에 HTTP 요청을 보내도록 도와주는 함수입니다.
쉽게 말하면, 원격 서버에 데이터를 요청하고, 응답을 받아오는 역할을 해요.

fetch('https://api.github.com/users/{username}')
  .then((response) => response.json())
  .then((data) => console.log(data));

 

  • API URL을 통해 GET 요청을 보냅니다.
  • 응답을 JSON 형식으로 변환합니다.
  • 데이터를 받아와 console.log로 출력가능합니다.

 


5️⃣ API 호출 시 동작 흐름

1. 로딩 표시: 데이터가 로드되는 동안 setLoading(true)로 로딩 상태를 보여줍니다.

2. API 호출:

const response = await fetch(`https://api.github.com/users/${username}`);
  • GitHub API에 유저 이름을 담아 요청을 보냅니다.
  • await를 사용해 요청이 완료될 때까지 기다립니다.

3. 에러 처리:

if (!response.ok) {
  throw new Error('User not found');
}
  • 응답 코드가 200(성공)이 아니면 에러를 throw합니다.

4. 데이터 파싱:

const data = await response.json();
  • JSON 형식으로 데이터를 변환합니다.

5. 상태 업데이트:

setUser(data); // 유저 데이터 저장
setError(null); // 에러 초기화

6. 에러 발생 시 처리:

setError(err.message); // 에러 메시지 저장
setUser(null); // 유저 정보 초기화

7. 로딩 중지:

setLoading(false);
  • 데이터를 다 불러오면 로딩을 멈춥니다.

6️⃣  GitHub API로 제공되는 데이터 (표 형식)

아래는 GitHub API로 받아올 수 있는 기본 사용자 정보와 활동 및 통계 정보를 정리한 표입니다

항목 설명 예시
login 사용자의 GitHub 아이디 octocat
id 사용자의 고유 ID 583231
avatar_url 프로필 이미지 URL 이미지 링크
html_url 프로필 페이지 링크 octocat
name 사용자 이름 kimjusnu
company 소속된 회사나 조직 Google
location 유저 위치 Korea, Seoul
email 공개된 이메일 000@naver.com
bio 자기소개 문구 i love cat
twitter_username 트위터 아이디 2c.dasf

🔍 활동 및 통계 정보

항목 설명 예시
public_repos 공개 저장소 수 42
public_gists 공개 Gist 수 13
followers 팔로워 수 1500
following 팔로우 중인 유저 수 300
created_at 계정 생성 날짜 2011-01-25T18:44:36Z
updated_at 프로필 마지막 업데이트 시간 2024-10-20T10:14:27Z

📎 관련 리소스 링크

API 앤드포인트 설명
repos_url 유저의 저장소 목록 가져오기
followers_url 유저의 팔로워 목록 가져오기
following_url 유저가 팔로우하는 유저 목록 가져오기
gists_url 유저가 작성한 Gist목록 가져오기
events_url 유저의 활동 이벤트 목록 가져오기
organizations_url 유저가 속한 조직 목록 가져오
728x90

'프로젝트 > GitHub Profile Viewer' 카테고리의 다른 글

비동기 작업과 Promise  (2) 2024.10.29
Next.js에서 use client 뭔지 알고 쓰자  (1) 2024.10.29
TurboPack 뭔지 알려드림. NextJS설치할 때 나오는 그거.  (5) 2024.10.29
대학생이라면 프로젝트, 다른 전공 학생이랑 반드시 해보세요!  (1) 2024.10.29
GitHub Profile Viewer 프로젝트 회고  (2) 2024.10.28
'프로젝트/GitHub Profile Viewer' 카테고리의 다른 글
  • Next.js에서 use client 뭔지 알고 쓰자
  • TurboPack 뭔지 알려드림. NextJS설치할 때 나오는 그거.
  • 대학생이라면 프로젝트, 다른 전공 학생이랑 반드시 해보세요!
  • GitHub Profile Viewer 프로젝트 회고
튼튼발자
튼튼발자
프론트엔드 개발자입니다. 헬스를 가끔해서인지 몸이 튼튼한거 같습니다. 그래서 튼튼한 개발자 => 튼튼발자입니다. 프론트엔드 및 관련 개발 내용 블로그 글로 정리해서 올려둡니다.
    250x250
  • 튼튼발자
    튼튼발자
    튼튼발자
  • 전체
    오늘
    어제
    • 분류 전체보기 (192)
      • 튼튼발자의 끄적끄적 (10)
      • 웹개발 (94)
        • HTML (5)
        • CSS (2)
        • JavaScript (40)
        • TypeScript (5)
        • REACT (22)
        • Next.js (13)
        • GIt (7)
      • 기타 (3)
        • 일상 (3)
      • 프로젝트 (27)
        • Componique: UI 컴포넌트 라이브러리 (18)
        • GitHub Profile Viewer (8)
        • 잇핏 (1)
      • 프론트엔드 개발자로 취업준비 (1)
        • 기술 면접 (7)
        • 코딩 테스트 준비하기 (0)
        • 자기소개서&지원서&이력서 (0)
      • 컴퓨터과학 (12)
        • 운영체제 (6)
        • 알고리즘 (6)
      • 전공 공부 (37)
        • AI(인공지능) (2)
        • 컴퓨터네트워크 (19)
        • 네트워크프로그래밍 (3)
        • SW소프트웨어응용설계 (7)
        • 클라우드컴퓨팅 (3)
        • 웹서비스프로그래밍 (3)
      • PT (0)
      • 취준일기 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프론트엔드
    웹개발
    ui컴포넌트
    componique
    JS
    프로그래밍
    TCP
    리액트
    네트워크
    react
    tailwind
    자바스크립트
    데이터전송
    JavaScript
    상태관리
    github
    프론트엔드개발
    NextJs
    트랜스포트계층
    코딩
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
튼튼발자
GitHub REST API 사용법
상단으로

티스토리툴바