Поиск кода в GitHub с использованием GraphQL (v4 API)
Я использую GraphQL API GitHub для поиска файлов / кода, содержащих определенное слово. Простой (надуманный) пример поиска, который в данном случае заключается в нахождении термина "говядина" в файлах, находящихся в "рецептах" (репо) для "someuser" (владельца репо), показан ниже:
{
search(query: "beef repo:someuser/recipes", type: REPOSITORY, first: 10) {
repositoryCount
edges {
node {
... on Repository {
name
}
}
}
}
}
Я попытался это сделать в GraphQL Explorer GitHub ( https://developer.github.com/v4/explorer/) и получить нулевые результаты поиска, что неверно, так как я могу подтвердить, что слово ("beef" в приведенном выше примере) в файлах в репо:
{
"data": {
"search": {
"repositoryCount": 0,
"edges": []
}
}
}
Когда я пытаюсь сделать это с помощью Rit API GitHub (v3) через curl, я определенно получаю результаты:
curl --header 'Accept: application/vnd.github.v3.raw' https://api.github.com/search/code?q=beef+repo:someuser/recipes
... Итак, я знаю, что запрос (REST v3 API) является действительным, и я понимаю, что строка запроса в API GraphQL (v4) идентична строке для API REST (v3).
Мои вопросы:
- Я неправильно использую API GitHub GraphQL (v4) или неправильно задаю строку запроса или пытаюсь использовать функции, которые еще не поддерживаются?
- Есть ли пример того, как сделать это, что кто-то может предоставить (или ссылку), который иллюстрирует, как искать код для конкретных слов?
1 ответ
Type: CODE
пока не поддерживается. Вы не можете найти код с помощью graphql прямо сейчас.
Ваше понимание верно. Просто вам не хватает одного куска. Поиск, который вы делаете, происходит против type: REPOSITORY
, если вы замените свой поиск на
search(query: "beef", type: REPOSITORY, first: 10) {
Вы получите все репо с говядиной на их имя.
Вы можете добавить квалификаторы, если вы хотите искать "говядину" только по именам, а не изменять запрос, как
search (запрос: "beef in: name", введите: REPOSITORY, first: 10) {
для получения дополнительной информации вы можете посмотреть на https://help.github.com/en/articles/searching-for-repositories