Link 요약 정리
curl https://api.github.com/zen
curl https://api.github.com/users/defunkt
defunkt
유저의 공개된 프로필curl https://api.github.com/users/defunkt -i
-i
JSON으로 변환curl -i -u your_username https://api.github.com/users/octocat
> Enter host password for user 'your_username':
curl -i -u username:$token https://api.github.com/users/octocat
x-ratelimit-limit
가 5000으로 변경된 것을 확인 가능plan
과 같은 non-public한 정보가 포함됨토큰 발급 방법: Link
curl -i -u your_username:your_token https://api.github.com/user
plan
과 같은 non-public한 정보가 포함됨다른 사용자를 대신하여 API를 사용해 개인 정보를 읽거나 써야하는 경우에 사용한다.
OAuth도 token을 사용하는데, 두 가지 큰 기능을 제공한다.
토큰은 web flow를 통해 만들어져야 한다.
curl -i https://api.github.com/repos/twbs/bootstrap
twbs/bootstrap
)의 세부 정보curl -i -H "Authorization: token $token" \
https://api.github.com/user/repos
curl -i https://api.github.com/users/octocat/repos
octocat
)의 Repo 리스트curl -i https://api.github.com/orgs/octo-org/repos
octo-org
)의 Repo 리스트응답 정보는 토큰의 권한 범위에 따라 달라진다.
public_repo
scope가 포함된 토큰은 github.com 에서 볼 수 있는 모든 공개 Repo를 포함한 응답을 반환repo
scope가 포함된 토큰은 github.com 에서 볼 수 있는 모든 공개 및 개인 Repo를 포함한 응답을 반환curl -i "https://api.github.com/users/octocat/repos?type=owner"
octocat
이 owner
인 Repo만 반환. (collaborate한 repo는 제외)Repository를 생성하기 위해선 세부 정보와 구성 정보가 담긴 JSON을 포함한 POST
요청을 작성해야 합니다.
curl -i -H "Authorization: token $token" \
-d '{ \
"name": "blog", \
"auto_init": true, \
"private": true, \
"gitignore_template": "nanoc" \
}' \
https://api.github.com/user/repos
nanoc
템플릿으로 gitignore
초기화curl -i https://api.github.com/repos/pengwynn/blog
> HTTP/1.1 404 Not Found
> {
> "message": "Not Found"
> }
403
또는 404
응답을 준다. (Repo의 존재여부에 상관없이, 개인 repo의 정보 유출을 막기 위해)curl -i -H "Authorization: token $token" \
https://api.github.com/issues
curl -i -H "Authorization: token $token" \
https://api.github.com/orgs/rails/issues
rails
)에 포함되는 이슈 리스트curl -i https://api.github.com/repos/rails/rails/issues
rails/rails
)에 포함되는 이슈 리스트curl -i https://api.github.com/repos/rails/rails/issues
> HTTP/1.1 200 OK
> ...
> Link: <https://api.github.com/repositories/8514/issues?page=2>; rel="next", <https://api.github.com/repositories/8514/issues?page=30>; rel="last"
> ...
Link
header: 외부 리소스에 대한 링크 응답을 제공. 이 경우 추가 데이터 페이지를 제공curl -i -H 'Authorization: token 5199831f4dd3b79e7c5b7e0ebe75d67aa66e79d4' \
-d '{ \
"title": "New logo", \
"body": "We should have one", \
"labels": ["design"] \
}' \
https://api.github.com/repos/pengwynn/api-sandbox/issues
Location
header 와 url 필드를 가진 JSON 응답curl -i https://api.github.com/users/defunkt
> HTTP/1.1 200 OK
> ETag: "bfd85cbf23ac0b0c8a29bee02e7117c6"
curl -i -H 'If-None-Match: "bfd85cbf23ac0b0c8a29bee02e7117c6"' \
https://api.github.com/users/defunkt
> HTTP/1.1 304 Not Modified
304
는 리소스가 마지막으로 요청한 이후 변경되지 않았으며 응답에 아무것도 포함되지 않음을 나타낸다.