Github API

Github API

对于常用Github的用户来说,经常有一些自动化的需求。比如我的需求是定时备份Github的issues和comments到本地。以下为Github的API的使用参考

基本访问路径 (Root Endpoints)

一开始读文档的时候,照着它的事例直接在命令行里curl,或者在InSomnia或Postman软件里访问,都完美显示200状态。可是一旦把链接里改写成自己的用户名就各种显示404无页面。还以为是授权问题,然后在页头HEADER中按照各种方式试了username和token密钥,都没用还是404。结果发现,原来不是方法的问题,纯粹是链接地址没写对!
实际上只是读取的话,完全不用任何授权,可以在命令行、Insomnia、网页等各种情况下直接输入链接访问任何人的所有公开信息。
然后对照官方路径列表Root Endpoints得到的链接,好像怎么访问都不对。反而在Stackoverflow中看到的一个链接,顺藤摸瓜自己发现了各种正确的访问路径,总结如下:

首先!访问的链接最后不能有/。如https://api.github.com/users/solomonxie是可以访问到我个人信息的,但是https://api.github.com/users/solomonxie/就不行了,唯一不同是多了一个/.
其次!不同于一般URL访问,GIthub的API访问链接是区分大小写的!
个人主要信息。 https://api.github.com/users/用户名,得到数据如下图:
image

个人所有repo。https://api.github.com/users/用户名/repos。会得到一个repo的JSON格式列表。
repo详细信息。https://api.github.com/repos/用户名/仓库名。repo的路径就开始和个人信息不同了。
获取某个repo的内容列表。https://api.github.com/repos/solomonxie/gists/contents,注意这只会返回根目录的内容。
获取repo中子目录的内容列表。https://api.github.com/repos/solomonxie/gists/contents/目录名。一定要注意这里一定要完全遵循原文件名的大小写,否则无法获得信息。如果是更深层的内容,则在链接列按照顺序逐级写上目录名称。
获取repo中某文件信息(不包括内容)。https://api.github.com/repos/solomonxie/gists/contents/文件路径。文件路径是文件的完整路径,区分大小写。只会返回文件基本信息。
获取某文件的原始内容(Raw)。1. 通过上面的文件信息中提取download_url这条链接,就能获取它的原始内容了。2. 或者直接访问:https://raw.githubusercontent.com/用户名/仓库名/分支名/文件路径
repo中所有的commits列表。https://api.github.com/repos/用户名/仓库名/commits。
某一条commit详情。https://api.github.com/repos/用户名/仓库名/commits/某一条commit的SHA
issues列表。https://api.github.com/repos/用户名/仓库名/issues。
某条issue详情。https://api.github.com/repos/用户名/仓库名/issues/序号。issues都是以1,2,3这样的序列排号的。
某issue中的comments列表。https://api.github.com/repos/用户名/仓库名/issues/序号/comments。
某comment详情。https://api.github.com/repos/用户名/仓库名/issues/comments/评论详情的ID。其中评论ID是从issues列表中获得的。

查询参数 (Parameters)

如果在上面基本链接中加入查询条件,那么返回的数据就是filtered,过滤了的。比如要求只返回正在开放的issues,或者让列表数据分页显示。常用如下:

分页功能。格式是?page=页数&per_page=每页包含数量。
https://api.github.com/users/solomonxie/repos?page=2&per_page=3

issues状态。格式是?state=状态。
https://api.github.com/repos/solomonxie/solomonxie.github.io/issues?state=closed


 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×