使用GraphQL调用GitHub api完成code freeze(一)
graphql 调用GitHub api
·
什么是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…
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献2条内容
所有评论(0)