微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过GitHub API V4搜索特定页面

如何解决如何通过GitHub API V4搜索特定页面

Github api v4 graphql具有一些好的功能。但是我找不到使用分页这样的搜索问题的方法

https://api.github.com/search/issues?q=repo:user/somerepo+is:open&page=10&per_page=100

有办法解决吗?谢谢!

解决方法

Github GraphQL api使用游标迭代结果。但是,没有关于游标格式的文档,而且看来,对于搜索查询,它只是对字符串cursor:<digit>

进行base64编码。

您可以在指定pageInfo { endCursor }时进行检查:

query { 
  search(type:ISSUE,query:"repo:mui-org/material-ui is:issue",first: 100){
        nodes {
      ... on Issue {
        number
        title
      }
    }
    pageInfo {
      endCursor
    }
  }
}

它给出了:

"pageInfo": {
   "endCursor": "Y3Vyc29yOjEwMA=="
}

如果您在base64中解码Y3Vyc29yOjEwMA==,它会给出:cursor:100,因此它不是真正的光标,您可以使用它来进行与Rest API v3中相同的分页(例如,您跳过页面建议)

比方说,您要直接使用第10页,每页100个项目,它将是cursor:900,它使Y3Vyc29yOjkwMA==的base64编码为:

{
  search(type: ISSUE,query: "repo:mui-org/material-ui is:issue",first: 100,after:"Y3Vyc29yOjkwMA==") {
    nodes {
      ... on Issue {
        number
        title
      }
      
    }
    issueCount
    pageInfo {
      endCursor
    }
  }
}

一种编程方法是将{_ {1}}的item_num从0(after: base64("cursor:<item_num>"))开始添加到X。您可以通过在第一次(或在初始时)请求after:"Y3Vyc29yOjA="来知道X请求,具体取决于您的用例)

请注意,Github搜索API的结果数上限为1000,因此理论上您无法使用per_page = 100来访问> 10的页面,例如:https://api.github.com/search/issues?q=repo:mui-org/material-ui&page=11&per_page=100(对GraphQL设置相同的限制)

还请注意,光标格式似乎随查询类型而变化,以上答案仅适用于issueCount查询。例如,检出this post的提交光标格式

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。