2017-07-28 96 views
7

Używam GRAPHUB API GraphQL do wyszukiwania plików/kodu zawierającego dane słowo. Prostym (wymyślonym) przykładem wyszukiwania, które w tym przypadku jest znalezienie terminu "wołowina" w plikach znajdujących się w "przepisach" (repo) dla "someuser" (właściciela repozytorium) pokazano poniżej:Wyszukiwanie kodu w GitHub przy użyciu GraphQL (v4 API)

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

próbowałem to na gitHub za GraphQL Explorer (https://developer.github.com/v4/explorer/) i odbierać zerowe wyniki wyszukiwania, które jest błędne jak mogę potwierdzić, że słowo („wołowina” w powyższym przykładzie) jest plików w repo:

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

Kiedy próbuję to za pomocą gitHub za REST API (v3) poprzez zwinięcie, zdecydowanie uzyskać wyniki:

curl --header 'Accept: application/vnd.github.v3.raw' https://api.github.com/search/code?q=beef+repo:someuser/recipes 

... Tak więc wiem, że zapytanie (API REST v3) jest poprawne i rozumiem, że ciąg zapytania w interfejsie API GraphQL (v4) jest identyczny jak w przypadku interfejsu API REST (v3).

Moje pytania są następujące:

  1. Am I niewłaściwie używając GitHub GraphQL (V4) API albo ja określający ciąg kwerendy nieprawidłowo, albo ja próbuje użyć funkcji, która nie jest jeszcze obsługiwany?
  2. Czy istnieje przykład tego, jak to zrobić, aby ktoś mógł podać (lub powiązać), który ilustruje sposób wyszukiwania kodu dla określonych słów?

Odpowiedz

4

Type: CODE nie jest jeszcze obsługiwany. Nie ma możliwości przeszukiwania kodu za pomocą grafql teraz.

Twoje zrozumienie jest słuszne. Tylko, że brakuje ci jednego kawałka. Wyszukiwanie, które robisz, ma miejsce w stosunku do type: REPOSITORY. jeśli zastąpić wyszukiwanie z

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

dostaniesz wszystkie repo o wołowinę w ich imieniu.