Выберите * для поиска Github GraphQL

Одним из преимуществ Github Search v4 (GraphQL) над v3 является то, что он может выборочно выбирать поля, которые нам нужны, вместо того, чтобы всегда получать их все. Однако проблема, с которой я столкнулся сейчас, заключается в том, как получить определенные поля.

Я пробовал онлайн-справку, но для меня это больше запутано, чем полезно. До сих пор я все еще не могу найти поля для размера, оценки и открытых проблем для возвращенного репозитория (ов).

Вот почему мне интересно, есть ли способ получить их все, например Select * в SQL. Спасибо.


person xpt    schedule 18.03.2018    source источник
comment
Этот вопрос / ответ помог мне найти лучший подход к поиску на Github, к вашему сведению.   -  person xpt    schedule 31.03.2018


Ответы (2)


GraphQL требует, чтобы при запросе поля вы также запрашивали набор выбора для этого поля (одно или несколько полей, принадлежащих типу этого поля), если только поле не преобразуется в скаляр, такой как строка или число. Это означает, что, к сожалению, нет синтаксиса для «получить все доступные поля» - вы всегда должны указывать поля, которые должен возвращать сервер.

Помимо просмотра документации, есть два дополнительных способа получить лучшее представление о доступных полях. Один из них - GraphQL API Explorer, который позволяет вам опробовать запросы в режиме реального времени. Это просто интерфейс GraphiQL, что означает, что когда вы составляете запрос, вы можете активировать функцию автозаполнения, нажав Shift + Space или Alt + Пробел, чтобы увидеть список доступных полей.

Если вы хотите найти поля для определенного типа, вы также можете просто спросить GraphQL :)

query{
  __type(name:"Repository") {
    fields {
      name
      description
      type {
        kind
        name
        description
      }
      args {
        name
        description
        type {
          kind
          name
          description
        }
        defaultValue
      }
    }
  }
}
person Daniel Rearden    schedule 18.03.2018

Краткий ответ: нет, по замыслу.

GraphQL был разработан для того, чтобы клиент явно определял требуемые данные, что привело к одному из основных преимуществ GraphQL, а именно предотвращению избыточной выборки.

Технически вы можете использовать фрагменты GraphQL где-нибудь в своем приложении для каждого типа поля, но если вы не Не знаю, какие поля вы пытаетесь получить, это вам не поможет.

person Steven Bell    schedule 18.03.2018