用POSTMAN通过GraphQL获取Github仓库的信息
你要做什么?
为了获取Github存储库的信息,使用名为POSTMAN的平台进行执行。
在POSTMAN中使用”GraphQL API v4″来发送查询,并获取存储库信息。
在这篇文章中,
-
- APIをPOSTMANに追加
- 簡単なqueryを叩く
我們將進行到這一點的描述。
邮递员是谁?
这是我们的官方网站。
POSTMAN是一个为API开发提供综合环境的工具。
这次的目的是使用GraphQL API v4获取GitHub信息,而不是自己制作API。因此,我们希望提供一个直观易用的API环境。
让我试试看吧
现在我们来实际操作一下。在POSTMAN的文档中,还有有关从安装到操作各种API的方法的说明,请您也检查一下。
环境
操作系统 — macOS Catalina 版本 10.15.5
POSTMAN — Postman v7.25.2
API — GraphQL API v4
前提准备
-
- POSTMANのインストール(POSTMAN Download Pageからできます)
- GithubAPIの認証・OAuth token(アクセストークン)の取得(こちらのGithubDocsを参考に)
将API注册到POSTMAN
首先,将GraphQL的API添加到POSTMAN中。
下载Schema
你可以从这里下载GraphQL的Public Schema。
向POSTMAN添加新的API


现在API的注册已经完成了。
2. 查询数据库
接下来,我们将创建查询。
创建一个新请求。

設置請求的詳細
接下来,我们将设置请求的详细信息。
-
- リクエストのタイプをデフォルトのGETから、POSTに変更します。
-
- URLは「https://api.github.com/graphql 」と入力します。
- Authorizationのタブを選択し、認証Typeを選びます(私はOAuth2.0にします)。

查询数据

我的用户信息
{
user(login: "\任意のユーザー名\") {
name
}
}
不展开回应,自己的Github显示名称会返回。
開放帳戶的資料庫擁有者(repositoryOwner())。
在「repositoryOwner()」中,您可以获取任何账户的信息。
这里是获取存储库总数的查询。
{
repositoryOwner (login: "facebook") {
repositories {
totalCount
}
}
}
“data”: {
“repositoryOwner”: {
“repositories”: {
“totalCount”: 127
}
}
}
}
仓库 repository() 的开放存储信息
如果在「repository()」函数中使用openRepository,您将能够获取到存储库的信息。
如果输入「owner:””, name:””」以省略账户信息,则只需要特定的存储库信息,而无需账户信息,这是推荐的方法。
在这里,我们获取的查询将包括fork总数、issue总数、stargazer总数、watcher总数、pullRequest总数、labels总数和milestone总数。
{
repository(owner:"facebook",name:"react"){
forks {
totalCount
}
issues {
totalCount
}
stargazers {
totalCount
}
watchers {
totalCount
}
pullRequests {
totalCount
}
labels{
totalCount
}
milestones{
totalCount
}
}
}
“数据”: {
“代码库”: {
“分支数”: {
“总数”: 29096
},
“问题”: {
“总数”: 9486
},
“星标者”: {
“总数”: 154618
},
“关注者”: {
“总数”: 6684
},
“拉取请求”: {
“总数”: 9968
},
“标签”: {
“总数”: 59
},
“里程碑”: {
“总数”: 39
}
}
}
}
获取每个问题的内容
不仅限于问题,您可以使用以下方法获取每个信息。
在“(首次:##)”中,您可以指定“首次##个”。使用API最多可获取100个。
可以设置各种限制,如“最后:##”,“之后:‘$$$’”等等。
这次,我们将获取前10个问题。
-
- タイトル
-
- issueID
-
- closedされているか(Boolean)
-
- createdAt(timestamp iso 8601 “YYYY-MM-DDTHH:MM:SSZ”)
- closedAt(timestamp iso 8601 “YYYY-MM-DDTHH:MM:SSZ”)
这是获取的查询。
{
repository(owner:"facebook",name:"react"){
issues(first:10) {
totalCount
edges {
node {
title
number
closed
createdAt
closedAt
}
}
}
}
}
“data”: {
“repository”: {
“issues”: {
“totalCount”: 9486,
“edges”: [
{
“node”: {
“title”: “无法 require() react-tools 模块”,
“number”: 10,
“closed”: true,
“createdAt”: “2013-05-30T03:46:02Z”,
“closedAt”: “2013-05-30T12:14:18Z”
}
},
{
“node”: {
“title”: “为 react-tools 模块编写测试”,
“number”: 12,
“closed”: true,
“createdAt”: “2013-05-30T04:32:10Z”,
“closedAt”: “2013-05-31T14:39:43Z”
}
},
{
“node”: {
“title”: “必须为 JSX 添加注释吗?”,
“number”: 16,
“closed”: true,
“createdAt”: “2013-05-30T12:46:11Z”,
“closedAt”: “2013-07-21T17:08:03Z”
}
},
{
“node”: {
“title”: “对 Bower 命令进行小更新”,
“number”: 21,
“closed”: true,
“createdAt”: “2013-05-30T16:01:55Z”,
“closedAt”: “2013-05-30T18:54:41Z”
}
},
{
“node”: {
“title”: “修正文档中 Rake 的 \”update_version\” 命令以去除尾随空格”,
“number”: 24,
“closed”: true,
“createdAt”: “2013-05-30T18:09:21Z”,
“closedAt”: “2013-07-21T17:08:47Z”
}
},
{
“node”: {
“title”: “创建有效的 npm 发布”,
“number”: 26,
“closed”: true,
“createdAt”: “2013-05-30T18:55:49Z”,
“closedAt”: “2013-05-30T19:23:46Z”
}
},
{
“node”: {
“title”: “React 在 RequireJS 中使用?”,
“number”: 28,
“closed”: true,
“createdAt”: “2013-05-30T20:51:32Z”,
“closedAt”: “2014-01-06T21:20:52Z”
}
},
{
“node”: {
“title”: “文档甚至未提及调和!”,
“number”: 37,
“closed”: true,
“createdAt”: “2013-06-01T20:01:11Z”,
“closedAt”: “2013-07-21T17:05:49Z”
}
},
{
“node”: {
“title”: “在 IE8 中需要 es5-sham 吗?”,
“number”: 39,
“closed”: true,
“createdAt”: “2013-06-02T09:08:10Z”,
“closedAt”: “2013-07-24T20:12:30Z”
}
},
{
“node”: {
“title”: “Uncaught SyntaxError: Unexpected token < “,
“number”: 40,
“closed”: true,
“createdAt”: “2013-06-02T13:27:44Z”,
“closedAt”: “2013-06-03T14:05:11Z”
}
}
]
}
}
}
}
3. 最后
POSTMAN非常适合于获取明确的信息和验证GraphQL的语法等方面非常有用。但是,我认为它不适合大规模信息收集。由于GraphQL可以获取Github API中的详细信息,所以我认为它适合用于数据分析的收集步骤。