github rest api tutorial rest api support github
GitHub REST API – GitHub와 프로그래밍 방식으로 상호 작용하는 인터페이스 :
GitHub에 대한 이전 자습서에서는 웹 인터페이스를 사용하여 개발자 관점에서 다양한 사용 측면을 탐색했습니다.
오늘날 대부분의 조직은 거의 모든 영역에서 자동화 기회를 찾고 있으며 REST API는 다양한 도구에 대한 다양한 시나리오를 자동화하는 데 유용했습니다.
물론 REST API를 사용할 수있는 다른 영역도있을 수 있습니다.
=> 독점 GitHub 교육 자습서 시리즈를 보려면 여기를 방문하십시오. .
학습 내용 :
GitHub REST API 통합
REST API (Representational State Transfer)는 주로 HTTP 요청을 사용하여 다음을 수행합니다.
- 가져 오기 – 리소스 검색
- PUT / 패치 – 리소스 업데이트
- 게시하다 – 리소스 만들기
- 지우다 – 리소스 삭제
REST API의 작동 방식을 자세히 살펴 보지 않고 GitHub의 REST API 지원에 직접 뛰어들 것입니다. 곱슬 곱슬하다 REST API를 통해 GitHub에 대한 이전 자습서에서 본 대부분의 작업을 수행하는 명령입니다.
현재 버전의 GitHub API는 v3이며이 자습서에서는 이러한 API를 통해 개발자에게 필요한 가장 중요한 활동을 다룹니다.
개인 액세스 토큰 생성
REST API가 명령 줄을 통해 작동하려면 GitHub 서버에 인증해야합니다. 따라서 자격 증명을 제공해야합니다. 글쎄, 우리는 GitHub 계정에 사용 된 비밀번호를 노출하고 싶지 않기 때문에 GitHub에 인증하기 위해 명령 줄과 함께 사용할 개인 액세스 토큰을 생성합니다.
GitHub 계정에 로그인하고 설정 귀하의 프로필 아래.
이동 개발자 설정-> 개인 액세스 토큰. 새 토큰을 생성하십시오.
이름을 추가하고 API 액세스 범위를 선택하고 토큰을 만듭니다.
다음 화면에서 토큰을 복사하여 파일에 저장하십시오. 이 토큰은 GitHub API에 액세스하기 위해 명령 줄에서 사용됩니다.
SQL 쿼리 연습 문제 답변 pdf
생성 된 토큰은 자식 클론 암호를 요구할 때 작동합니다. 이제 토큰이 준비되었으므로 CURL 프로그램을 사용하여 명령 줄에서 API에 액세스하는 방법을 살펴 보겠습니다.
전제 조건으로 다운로드하여 설치해야합니다. '곱슬 곱슬하다' .
저장소
여기에 표시된 REST API의 예는 Windows 시스템에서 실행됩니다. 이 섹션에서는 GitHub 리포지토리 작업 중 일부를 보여줍니다.
#1) 사용자의 공용 저장소를 나열하려면 다음 명령을 한 줄로 실행하십시오.
curl -X GET -u : https://api.github.com/users//repos | grep -w clone_url
#두) 조직 아래의 공용 저장소를 나열합니다.
curl -X GET -u : https://api.github.com/orgs//repos | grep -w clone_url
#삼) 개인 저장소를 만듭니다.
curl -X POST -u : https://api.github.com/user/repos -d '{'이름 ': 'Demo_Repo '}'
위의 명령 이름에서 매개 변수입니다. 개인 사용자 저장소를 만드는 동안 사용할 수있는 몇 가지 다른 매개 변수를 살펴 보겠습니다.
curl -X POST -u : https://api.github.com/user/repos -d '{'name ': 'Demo_Repo ', 'description ': 'API를 통한 첫 번째 저장소입니다 ', 'homepage ': 'https : //github.com ' , ”public ”: ”true ”, ”has_issues ”: ”true ”, ”has_projects ”: ”true ”, ”has_wiki ”: ”true ”}”
위의 명령에서 name, description, homepage, public, has_projects, has_wiki는 모두 문자열 값을 가지며 ”로 묶인 매개 변수입니다. 또한 :과 사이에 공백이 있습니다.
예를 들어, public 매개 변수는 저장소를 공개합니다. 이 명령을 사용하면 이슈, 프로젝트, Wiki를 만들 수도 있습니다.
# 4) 저장소의 이름을 바꿉니다.
curl -X POST -u : -X PATCH -d '{'name ': ' '}' https://api.github.com/repos//
# 5) 업데이트 has_wiki 저장소에서 매개 변수를 입력하고 값을 false로 설정하십시오.
curl -u : -X PATCH -d '{'has_wiki ': 'false '}' https://api.github.com/repos/user-name/
# 6) 저장소를 삭제하십시오.
curl -X DELETE -u : https://api.github.com/repos//
# 7) 조직에 저장소를 만듭니다.
curl -X POST -u : https://api.github.com/orgs//repos '{'name ': 'Demo_Repo_In_Org ', 'description ': 'API를 통한 조직의 첫 번째 저장소입니다 ', 'homepage ': 'https : //github.com ' , ”public ”: ”true ”, ”has_issues ”: ”true ”, ”has_projects ”: ”true ”, ”has_wiki ”: ”true ”}”
# 8) 리포지토리에 대한 포크를 나열합니다.
curl -X GET -u : https://api.github.com/repos///forks | grep -w html_url
위의 명령은 분기 된 저장소를 찾아 볼 URL을 나열합니다. 사용자 저장소에서도 동일하게 볼 수 있으며 ‘통계 TAB => 포크’ .
curl -X GET -u : https://api.github.com/repos///forks | grep -w clone_url
위의 명령은 분기 된 저장소를 복제 할 URL을 나열합니다.
# 9) 조직에서 저장소를 포크하십시오.
curl -X POST -u : -d '{'organization ': ' '}' https://api.github.com/repos///forks
협력자
#1) 저장소의 공동 작업자를 나열합니다.
curl -X GET -u : https://api.github.com/repos///collaborators | grep -w 로그인
#두) 사용자가 Collaborator 목록에 있는지 확인합니다.
curl -X GET -u : https://api.github.com/repos///collaborators/
사용자가 공동 작업자의 일부인 경우 출력으로 표시되는 콘텐츠가없고 다음 메시지가 표시됩니다.
{
'메시지': '사용자가 아닙니다',
“documentation_url”:“https://developer.github.com/v3/repos/collaborators/#get”
}
#삼) 사용자의 권한을 확인하십시오.
curl -X GET -u : https://api.github.com/repos///collaborators/
# 4) 사용자를 저장소에 Collaborator로 추가합니다.
curl -X PUT -u : https://api.github.com/repos///collaborators/
이것을 게시하면 초대받은 사람이 공동 작업자로 참여하려면 초대를 수락해야합니다. 사용자가 이미 공동 작업자로 추가 된 경우 콘텐츠가 표시되지 않고 출력이 표시됩니다.
# 5) Collaborator에서 사용자를 제거합니다.
curl -X DELETE -u : https://api.github.com/repos///collaborators/
명령이 성공적으로 실행되면 내용이 표시되지 않습니다.
조직
참고 : 조직 생성은 GitHub API에서 제공하지 않습니다.
#1) 사용자의 모든 조직 계정을 나열합니다.
curl -X GET -u : https://api.github.com/repos/user/orgs | grep -w 로그인
#두) 조직을 업데이트합니다.
curl -X PATCH -u : -d '{'name ': 'TeamVN ', 'billing_email ': 'vniranjan72@outlook.com ', 'email ': 'vniranjan72 @ outlook .com ”, ”location ”: ”Bangalore ”, ””description ”: ”조직 세부 정보 업데이트 ”}”https://api.github.com/orgs/
지점
#1) 사용자 저장소의 분기를 나열합니다. 이 명령은 저장소의 모든 분기를 나열합니다.
curl -X GET -u : https://api.github.com/repos///branches | grep -w 이름
#두) 사용자 저장소의 모든 보호 된 분기를 나열합니다.
curl -X GET -u : https://api.github.com/repos///branches ? protected = true | grep -w 이름
#삼) 사용자 저장소의 보호되지 않은 모든 분기 나열
curl -X GET -u : https://api.github.com/repos///branches ? protected = false | grep -w 이름
# 4) 분기 보호를 제거하십시오.
curl -X DELETE -u : https://api.github.com/repos///branches/master/protection
풀 요청
#1) Pull 요청을 나열합니다.
curl -X GET -u : https://api.github.com/repos///pulls?state=open | grep -w 제목
상태 매개 변수에 대한 옵션은 Open, Closed, All입니다.
#두) Pull 요청을 생성합니다.
curl -X POST -u : -d '{'title ': 'Great feature added ', 'body ': 'Please pull the great change in to master branch ', 'head ”: ”기능 ”, ”기본 ”: ”마스터 ”}” https://api.github.com/repos///pulls
#삼) 생성 된 Pull 요청 수를 나열합니다.
curl -X GET -u : https://api.github.com/repos///pulls?state=open | grep -w 번호
# 4) Pull 요청 본문 또는 기타 매개 변수를 업데이트합니다 (최대 커밋 250 개만 해당).
curl -X PATCH -u : -d '{'body ': '기능 브랜치의 큰 변경 사항을 마스터 브랜치로 가져 오는 데 필수 '}' https://api.github.com/repos///pulls / 31
# 5) Pull 요청 커밋을 나열합니다.
curl -X GET -u : https://api.github.com/repos///pulls/31/commits
# 6) Pull 요청 파일을 나열합니다 (최대 300 개 파일 만 가능).
curl -X GET -u : https://api.github.com/repos///pulls/31/files | grep -w 파일 이름
# 7) 풀 요청을 병합합니다.
curl -X PUT -u : -d“{”commit_message ”: ”Good Commit ”}” https://api.github.com/repos///pulls/31 /가다
병합 된 경우 응답
{
'Sha': 'e5db2ce465f48ada4adfb571cca2d6cb859a53c6',
'병합': 참,
'메시지': '풀 요청이 성공적으로 병합되었습니다.'
}
풀 요청을 병합 할 수없는 경우 응답
{
'message': 'Pull 요청은 병합 할 수 없습니다.',
“documentation_url”:“https://developer.github.com/v3/pulls/#merge-a-pull-request-merge-button”
}
레이블, 이정표 및 문제
라벨
#1) 저장소의 모든 레이블을 나열합니다.
curl -X GET -u : https://api.github.com/repos///labels | grep -w 이름
#두) 저장소의 특정 레이블을 나열합니다.
curl -X GET -u : https://api.github.com/repos///labels / 곤충
#삼) 라벨을 만들려면.
curl -X POST -u : -d '{'name ': 'defect ', 'description ': 'To raise a defect ', 'color ': ' ff493b '}' https://api.github.com/repos///labels
의 16 진수 색상 코드 색깔 매개 변수는 다음에서 설정할 수 있습니다. 색상 16 진수
# 4) 라벨 업데이트
curl -X PATCH -u : -d '{'color ': '255b89 '}' https://api.github.com/repos///labels /결함
# 5) 라벨 삭제
curl -X DELETE -u : https://api.github.com/repos/vniranjan1972/Demo_Project_Repo_VN/labels/defect
이슈
# 6) 저장소의 특정 문제를 나열합니다.
curl -X GET -u : https://api.github.com/repos///issues/20 | grep -w 제목
# 7) 저장소의 모든 문제를 나열합니다.
curl -X GET -u : https://api.github.com/repos///issues | grep -w 제목
# 8) 문제를 만듭니다.
curl -X POST -u : -d '{'title ': 'New welcome page ', 'body ': 'To design a new page ', 'labels ': (' 향상 '), '이정표 ': '3 ', '담당자 ': (' ', '
위의 명령에서 레이블 및 양수인 매개 변수는 여러 값을 제공 할 수있는 문자열 배열입니다. 상태 매개 변수는 다음 중 하나의 값을 갖습니다. 개방 또는 폐쇄.
# 9) 이슈에 라벨을 추가합니다.
curl -X POST -u : -d '{'labels ': ('enhancement ')}' https://api.github.com/repos///issues / 30 / 라벨
# 10) 문제 편집 및 매개 변수 업데이트 예 : 그것에 레이블.
curl -X PATCH -u : -d '{'labels ': ('bug ', 'enhancement ')}' https://api.github.com/repos///issues / 30
위의 명령에서 문제 번호 30에 대한 레이블을 업데이트합니다.
#열한) 특정 문제에서 레이블을 제거합니다.
curl -X DELETE -u : https://api.github.com/repos///issues/30/labels/bug
# 12) 특정 문제에서 모든 레이블을 제거합니다.
curl -X DELETE -u : https://api.github.com/repos///issues/30/labels
마일스톤
# 13) 모든 마일스톤을 나열합니다.
curl -X GET -u : -d '{'state ': ('open ')}' https://api.github.com/repos///milestones | grep -w 제목
# 14) 특정 마일스톤의 세부 정보를 나열합니다.
curl -X GET -u : https://api.github.com/repos///milestones / 1 | grep -w 제목
#열 다섯) 마일스톤을 만듭니다.
curl -X POST -u : -d '{'title ': 'R5 ', 'state ': 'open ', 'description ': 'Track for Milestone R5 ', ”due_on ”: ”2019-12-05T17 : 00 : 01Z ”}” https://api.github.com/repos///milestones
위의 명령에서 due_on 타임 스탬프 ISO 8601 에 YYYY-MM-DDTHH : MM : SSZ 체재. 이에 대한 자세한 내용은 @ ISO 8601
# 16) 마일스톤을 업데이트합니다.
curl -X PATCH -u : -d '{'state ': 'closed '}' https://api.github.com/repos///milestones /삼
# 17) 마일스톤을 삭제합니다.
curl -X DELETE -u : https://api.github.com/repos///milestones /삼
팀
#1) 조직의 팀을 나열합니다.
curl -X GET -u : https://api.github.com/orgs//teams | grep -w 이름
팀 ID로 나열
curl -X GET -u : https://api.github.com/orgs//teams | grep -w id
#두) 사용자별로 팀을 나열합니다.
curl -X GET -u : https://api.github.com/user/teams | grep -w 이름
#삼) 팀을 만들고 구성원을 추가하고 팀에 저장소를 추가합니다.
curl -X POST -u : -d '{'name ': ' ', 'description ': 'Enter simple description ', 'maintainers ': (' '), ”repo_names ”: (”/ ”)}” https://api.github.com/orgs/Demo-Proj-Org/teams
# 4) 팀 이름과 설명을 수정합니다.
curl -X PATCH -u : -d '{'name ': 'New Team Name ', 'description ': 'Latest Description '}' https://api.github.com/teams/
1 단계의 명령을 실행하여 팀 ID를 검색 할 수 있습니다.
# 5) 기존 팀에 리포지토리를 추가합니다.
curl -X PUT -u : https://api.github.com/teams//repos//
# 6) 팀에서 저장소를 제거합니다.
curl -X DELETE -u : https://api.github.com/teams/
# 7) 팀을 삭제합니다.
curl -X DELETE -u : https://api.github.com/teams/
저장소, 코드, 문제 검색
검색 API를 사용하면 모든 항목을 검색 할 수 있습니다.
#1) 예를 들어, 특정 사용자가 소유 한 모든 저장소를 검색하려는 경우.
컬 -X GET https://api.github.com/search/repositories?q=user : | grep -w '이름'
필수 매개 변수는 뭐 Github의 특정 영역에서 검색을 제한하기 위해 키워드와 한정자로 구성된 검색 기준이 포함되어 있습니다.
#두) README 파일에 V 및 Niranjan이라는 단어가 포함 된 특정 사용자가 소유 한 모든 저장소 검색
컬 -X GET https://api.github.com/search/repositories?q=V+Niranjan+in:readme+user : | grep -w 이름
#삼) 파일 내용에서 키워드를 검색합니다. 아래 예에서는 사용자가 소유 한 저장소의 파일에서 키워드‘System’및‘addEmployee’를 검색합니다.
컬 -X GET https://api.github.com/search/code?q=System+addEmployee+in:file+language:java+repo:/ | grep -w 이름
# 4) 미해결 문제 내에서 키워드 '환영'을 검색하고 개선 사항으로 분류합니다.
컬 -X GET https://api.github.com/search/issues?q=welcome+label:enhancement+state:open+repo:/
# 5) 닫힌 문제 내에서 키워드 '주소'를 검색하고 개선 사항으로 레이블을 지정합니다.
컬 -X GET https://api.github.com/search/issues?q=address+label:enhancement+state:closed+repo:/
릴리스
#1) 태그 이름 및 ID별로 저장소의 릴리스를 나열합니다.
curl -X GET -u : https://api.github.com/repos///releases | grep -w tag_name
curl -X GET -u : https://api.github.com/repos///releases | grep -w id
Windows 7을위한 최고의 무료 백업 소프트웨어
#두) 단일 릴리스에 대한 세부 정보를 가져옵니다.
curl -X GET -u : https://api.github.com/repos///releases / | grep -w tag_name
curl -X GET -u : https://api.github.com/repos///releases / | grep -w 본문
curl -X GET -u : https://api.github.com/repos///releases / | grep -w 이름
#삼) 최신 릴리스에 대한 세부 정보를 가져옵니다.
curl -X GET -u : https://api.github.com/repos///releases/latest | grep -w tag_name
curl -X GET -u : https://api.github.com/repos///releases/latest | grep -w 이름
curl -X GET -u : https://api.github.com/repos///releases/latest | grep -w 본문
# 4) 태그별로 출시 세부 정보를 확인하세요.
curl -X GET -u : https://api.github.com/repos///releases/t ags / | grep -w 이름
curl -X GET -u : https://api.github.com/repos///releases/t ags / | grep -w 본문
# 5) 릴리스를 작성하십시오.
curl -X POST -u : -d '{'tag_name ': 'R3.0 ', 'target_commitish ': 'master ', 'name ': 'Release 3.0 ', 'body ': '제품의 릴리스 3.0 용입니다. ', 'draft ': 'false', 'prerelease ': 'false'} ' https://api.github.com/repos//
노트 :릴리스를 작성하는 명령에서 '초안'및 '사전 릴리스'매개 변수는 부울 값을 사용합니다. ”없이 true 또는 false를 입력하십시오.
- 초안 값 false는 게시 된 릴리스가 생성되었음을 의미하고 true 인 경우 게시되지 않은 릴리스입니다.
- 프리 릴리즈 거짓은 정식 버전임을 의미합니다. True 값은 프리 릴리즈임을 의미합니다.
# 6) 릴리스를 편집하거나 업데이트하십시오.
curl -X PATCH-u : -d“{”태그 _ 이름 ”: ”R3.1 ”}” https://api.github.com/repos//
# 7) 릴리스를 삭제하십시오.
curl -X DELETE-u : https://api.github.com/repos//
# 8) 릴리스에 대한 자산을 나열하십시오.
curl -X DELETE-u : https://api.github.com/repos//
결론
이 GitHub REST API 가이드에서는 데이터 GET, PUT, POST, PATCH, DELETE에 대한 다양한 작업에 REST API를 사용하는 방법을 살펴 보았습니다.
REST API가 GitHub.com에서 직접 작동하는 데 사용되는 URL은 https://api.github.com입니다. 반면 팀이 조직에서 GitHub enterprise를 사용하는 경우 REST API와 함께 사용할 URL은 https : /// api / v3입니다.
지금까지이 시리즈의 모든 자습서는 로컬이 아닌 GitHub에서 직접 다양한 유형의 아티팩트에 대한 버전 제어를 위해 팀에서 작업하면서 공동 작업의 모범 사례와 함께 개발자 관점에서 GitHub 사용에 집중했습니다.
다가오는 튜토리얼은 다음과 같은 Git 클라이언트 인터페이스를 사용하여 GitHub에서 복제 된 로컬 저장소에서 개발자가 오프라인으로 작업하는 방법에 중점을 둘 것입니다. GitHub 데스크톱 과 TortoiseGit 변경 사항을 원격 저장소로 다시 푸시합니다.
=> 처음부터 GitHub를 배우려면 여기를 방문하십시오.
추천 도서
- Rest API 튜토리얼 : REST API 아키텍처 및 제약
- Rest API 응답 코드 및 Rest 요청 유형
- 개발자를위한 GitHub 자습서 | GitHub 사용 방법
- BDD 접근 방식을 사용하는 Cucumber로 REST API 테스트
- 2021 년 최고의 10 가지 API 테스트 도구 (SOAP 및 REST API 테스트 도구)
- Spring RestTemplate 및 TestNG를 사용한 REST API 테스트
- Rest Assured 및 Jenkins를 사용하여 API 요청을 자동화하는 방법
- Parasoft SOAtest 튜토리얼 : 스크립트없는 API 테스트 도구