使用GraphQL调用GitHub api完成code freeze(一)

什么是GraphQL

在这里插入图片描述
这里是GraphQL的中文官网:Graphql

正如GraphQL官网所说:你可以通过一个单一入口端点得到你所有的数据能力
在这里插入图片描述
如果我们采用原来的restful风格来进行api的调用,我们需要使用不同的提交方式或者url带参数(eg:get)
但是我们使用graphql的话,我们的url就是固定的

这里以GitHub的doc为例

在这里插入图片描述
我们可以通过这一个端点去获得我们需要的所有数据。

graphiql(grapgql开发工具)的安装

下载地址:graphiql

下载完成后,需要在graphiql中配置我们GitHub的一个认证

详细流程可见GitHub文档:iql配置

在这里插入图片描述

graphql的最主要两种操作

  • query(查询数据)
  • mutation(修改数据)
    在这里插入图片描述
#查询ORG下REPO的id
query{
  repository(owner: "ORG",name: "yanci_repo"){
    id
  }
}

#查询ORG下REPO下的每一个branch对应的id,patten,还有checkcontexts
query{
  repository(owner: "ORG",name: "yanci_repo"){
    branchProtectionRules(last: 1){
      nodes{
        id,
        pattern,
        requiredStatusCheckContexts,
      }
    }
  }
}
#通过branch的id对其进行修改更新(rules就是我们创建的变量,再通过参数传递给mutation)
mutation($rule: UpdateBranchProtectionRuleInput!) {
  updateBranchProtectionRule(input:$rule) {
    clientMutationId
  }
}
{
  "rule": {
    "isAdminEnforced": true,
    "pattern": "master",
    "branchProtectionRuleId": "********",
    "requiredStatusCheckContexts": []
  }
}
#没有找到对应branch的话通过创建对应的branch在进行更新操作
mutation($rule: CreateBranchProtectionRuleInput!) {
  createBranchProtectionRule(input:$rule) {
    branchProtectionRule{
      id
    }
  }
}

{
  "rule": {
    "pattern": "master",
    "repositoryId": "**************",
    "requiredStatusCheckContexts": "code-freeze by yanci",
    "requiresStatusChecks": true,
    "requiresStrictStatusChecks": true,
    "isAdminEnforced": true
  }
}

持续更新ing…

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者



你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值