2017-07-28 95 views
7

我正在使用GitHub的GraphQL API搜索包含特定单词的文件/代码。在这种情况下,在“someuser”(回购商的所有者)的“配方”(回购)中的文件中找到术语“牛肉”的简单(人造)搜索示例如下所示:使用GraphQL(v4 API)搜索GitHub中的代码

{ 
    search(query: "beef repo:someuser/recipes", type: REPOSITORY, first: 10) { 
    repositoryCount 
    edges { 
     node { 
     ... on Repository { 
      name 
     } 
     } 
    } 
    } 
} 

我想这在GitHub的GraphQL资源管理器(https://developer.github.com/v4/explorer/)和接收来自这是不正确的搜索结果为零,因为我可以证实,这个词(在上面的例子中“牛”)是在回购协议中的文件:

{ 
    "data": { 
    "search": { 
     "repositoryCount": 0, 
     "edges": [] 
    } 
    } 
} 

当我尝试使用这个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中的相同。

我的问题是:我使用不当而GitHub的GraphQL(V4)API或我指定的查询字符串不正确

  1. 上午,还是我尝试使用尚未支持的功能?
  2. 有没有一个例子说明如何做到这一点,有人可以提供(或链接到)说明如何搜索特定单词的代码?

回答

4

Type: CODE目前还不支持。您现在无法使用graphql搜索代码。

你的理解是对的。只是你缺少一块。 您正在进行的搜索是针对type: REPOSITORY发生的。 如果你

search(query: "beef", type: REPOSITORY, first: 10) {

取代你的搜索,你会得到在他们的名字牛肉全部回购。