본문 바로가기
개발일지/github

GithubAPI를 이용한 repository 정보 불러오기

by 한삐 2023. 3. 15.
728x90

Github REST API 설명서

https://docs.github.com/ko/rest?apiVersion=2022-11-28

 

GithubAPI 이용 시 토큰이 필요한 경우 아래와 같이 토큰 발급이 가능하다.

 

우측 상단의 프로필을 통해 Settings 접근

 

좌측 하단의 Developer settings 접속

 

Tokens나 Fine-grained tokens를 통해 원하는 권한들을 설정해 토큰을 생성할 수 있다.

 

Github 홈페이지에 여러 api들이 많기때문에 필요에 따라 사용하면 좋을 것 같다.

여기서는 repository 안의 파일들의 정보만을 가져올 것이다.

 

requestURL

const BASE_URL =
    "https://api.github.com/repos/{유저명을 포함한/레포지토리 이름}/contents/{데이터를 가져올 디렉토리}";
  const options = {
    headers: {
      "Content-Type": "application/json",
    },
  };

예를 들어 src의 posting이라는 디렉토리의 데이터들을 가져오고 싶다면

https://api.github.com/repos/name/some-repo/contents/src/posting

정도가 될 수 있다.

 

요청한url이 정상적으로 작동했다면 아래와 같이 데이터를 받을 수 있다.

 

하지만 하나의 파일에 대한 구체적인 정보는 들어있지 않기 때문에, 한 단계로 더 들어가 정보를 받아온다면

위와 같은 base64로 인코딩된 content 데이터를 받아올 수 있다.

 

콘텐츠의 데이터를 정상적으로 받아오기 위해서는 아래와 같이 디코딩이 필요하다.

 

const eachMarkdown = async (name: string) => {
    const url = `${BASE_URL}/${categoryName}/${name}`;
    const response = await axios.get(url, options);
    const content = Buffer.from(response.data.content, "base64").toString();
    
    ...
  };

코드가 정상적으로 작동한다면 아래와 같이 데이터들을 받아올 수 있다.

 

필요하다면 JSON.stringify나 정규식을 통해 원하는 데이터를 추출해도 좋다.

 

728x90

댓글