使用GitHub GraphQL API来获取GitHub评论

首先

@iron-samurai さん的文章 (zhī)

@iron-samurai さん 的文章 (Plus, “さん” is a Japanese honorific and not used in Chinese.)

浏览了[Github API]中的内容,从中了解到为了回顾评论,将过去收到的所有评论提取出来并以Json格式输出的方法。我也希望使用GitHub API一次性查看过去的评论。本文将介绍使用gh命令和GraphQL获取GitHub评论的方法。

GitHub API 是什么?

请使用GitHub的REST API来构建集成,提取数据并自动化工作流程。

这是一个可以使用API来执行GitHub的各种功能的工具。

GitHub GraphQL API是什么?

GitHub的GraphQL API提供了灵活性和准确定义要提取的数据的功能。

基本上,透過GraphQL而不是REST格式來使用GitHub API來獲取數據。

环境准备

如果您希望从命令行发出 API 请求,GitHub 建议使用 GitHub CLI。
因此,本文中将使用 GitHub CLI 来获取评论。

# ツールインストール
brew install gh

# 認証
gh auth login

如果不是使用MacOS的話,請選擇以下選項並安裝GitHub CLI以符合您的環境。
https://github.com/cli/cli#installation

查询

gh api graphql -F owner='組織名orアカウント名' -F name='リポジトリ名' -f query='
query($name: String!, $owner: String!){
  repository(owner: $owner, name: $name) {
    pullRequests(first: 1,orderBy: {field: CREATED_AT, direction: DESC}) {
      nodes {
        url
        title
        createdAt
        author {
          login
        }
        reviews(first: 10) {
          edges {
            node {
              comments(first: 25) {
                edges {
                  node {
                    databaseId
                    bodyText
                    diffHunk
                    createdAt
                    path
                    author {
                      login
                    }
                    replyTo {
                      databaseId
                      bodyText
                      diffHunk
                      createdAt
                      path
                      author {
                        login
                      }
                    }
                  }
                }
              }
            }
          }
        }
        comments(first: 10,orderBy: {field: UPDATED_AT, direction: DESC}) {
          nodes {
            createdAt
            bodyText
          }
        }
      }
    }
  }
}

相应的类型

クエリのオブジェクト型repositoryRepositorypullRequestsPullRequestConnectionreviewsPullRequestReviewConnectionreviews.commentsPullRequestReviewCommentConnectioncommentsIssueCommentConnection

关于对象
https://docs.github.com/ja/graphql/reference/objects

节点和边的区别。

節點

节点是对象的总称。节点可以直接进行查找,也可以通过连接访问相关节点。如果指定了返回非标量节点,则需要包括所有子字段,直到在所有字段中返回标量为止。

边缘

边表示节点之间的连接。对连接进行查询将通过遍历该边来获取节点。每个边的字段都包含节点字段和游标字段。

评论和评论评论的区别

评论是附加在拉请求上的评论

评论文件中的评论

参照

GH命令的安装
https://docs.github.com/ja/rest/quickstart?apiVersion=2022-11-28

广告
将在 10 秒后关闭
bannerAds