我正在使用GitHub的GraphQL API来搜索包含特定单词的文件/代码。一个简单的(人为的)搜索示例,在这种情况下是找到术语"牛肉"在位于"食谱" (回购)" someuser" (回购的所有者)如下所示:
{
search(query: "beef repo:someuser/recipes", type: REPOSITORY, first: 10) {
repositoryCount
edges {
node {
... on Repository {
name
}
}
}
}
}
我在GitHub的GraphQL资源管理器(https://developer.github.com/v4/explorer/)中尝试过此操作并且从搜索中得到零结果,这是不正确的,因为我可以确认单词("牛肉"在示例中上面的文件在repo:
中{
"data": {
"search": {
"repositoryCount": 0,
"edges": []
}
}
}
当我通过curl使用GitHub的REST API(v3)尝试此操作时,我肯定会得到结果:
curl --header 'Accept: application/vnd.github.v3.raw' https://api.github.com/search/code?q=beef+repo:someuser/recipes
...所以我知道查询(REST v3 API)是有效的,我的理解是GraphQL(v4)API中的查询字符串与REST(v3)API的查询字符串相同。
我的问题是:
答案 0 :(得分:10)
Type: CODE
尚不支持。你现在无法使用graphql搜索代码。
您的理解是正确的。只是你错过了一件。
您正在进行的搜索是针对type: REPOSITORY
进行的。
如果用
search(query: "beef", type: REPOSITORY, first: 10) {
你将得到所有以他们名字命名牛肉的回购品。
答案 1 :(得分:0)
如果要仅用名称搜索“牛肉”而不是像
那样更改查询,则可以添加限定词。search(查询:“ beef in:name”,键入:REPOSITORY,第一个:10){
有关更多详细信息,请查看https://help.github.com/en/articles/searching-for-repositories#search-based-on-the-contents-of-a-repository