前段时间因为工作需要,需要抓取 Github 上的一些信息。于是我就查了一些资料,看看如何能爬取到对应的信息。经过查询,发现 Github 有开放一些 HTTP 接口,可以让我们去调用。虽说直接调用 HTTP 接口也可以实现,但每次都要做入参和出参的封装,使用上非常麻烦。
经过一段时间的搜索,我发现了一款名为 GitHub API for Java 的 SDK,其对 Github 做了深度的封装,使得我们可以更方便地调用 Github 的 HTTP 接口。今天就跟大家介绍一下这款 SDK 的简单使用,方便朋友们后续使用。
鉴权方式
Github 提供了多种权限方式,例如:账号密码方式、Personal Access Token 方式、JWT 方式等。这款 SDK 对于这几种方式都支持了,并且还支持通过不同方式传递对应鉴权信息,例如:传参方式、配置文件方式、环境变量方式等等。这里我们只是简单地爬取数据,所以我们使用 Personal Access Token + 简单传参方式
就可以,其实例代码如下所示,非常简单。
GitHub github = new GitHubBuilder().withOAuthToken("my_personal_token").build();
Personal Access Token 的生成,在 Github Setting 的 Developer settings 中,如下图所示。如果你实在找不到,那么可以参考官方文档:创建个人访问令牌 - GitHub Docs
SDK 介绍
通过上面的介绍,我们可以知道通过 GithubBuilder 就可以获取一个 Github 对象,而该 Github 类对象其实就代表了 Github 这个网站。Github 类提供了各种方法,例如:获取 Github 的 IP 地址列表、获取所有组织列表等等,如下图所示。
其实这个 SDK 正是通过这种面向对象的方式设计的,除了最常用的 Github 类之外,还有下面这些类:
- GHRepository 类:代表 Github 上的一个仓库
- GHUser 类:代表 Github 上的一个用户
- GHTeam 类:代表 Github 上的一个 Team
- GHBranch:代表仓库的一个分支
- 等等
基本上 Github 上的一切都用一个类来表示,一切都可以抽象为一个对象,这正是面向对象的精髓所在。 而每个类都提供了非常多的方法,例如 GHUser 类提供了方法 isMemberOf(GHOrganization org)
方法来判断一个用户是否是某个组织的成员。
更多方法,大家可以直接查询其对应的 API 文档:Overview (GitHub API for Java 1.300 API)。
快速入门
首先,在项目中引入该 maven 依赖,如下所示。
<dependency>
<groupId>org.kohsuke</groupId>
<artifactId>github-api</artifactId>
<version>1.301</version>
</dependency>
接着直接写一个 HelloGithub 类,如下所示。
public class HelloGithub {
public static void main(String[] args) throws IOException {
GitHub github = new GitHubBuilder().withOAuthToken("my_personal_token").build();
System.out.println(github.getMyself().getName());
}
}
直接运行该类便可获取到的 token 对应用户的用户名,如下图所示。
这就是一个最简单的演示了,麻雀虽小五脏俱全,更多的功能等待大家去探索发现~
好了,这就是今天的简单分享,希望大家喜欢。
如果你喜欢今天这篇文章,欢迎一键三连,你们的支持就是我更新的最大动力!