Не путайте операцию с фактическим запрашиваемым полем. Синтаксис должен выглядеть следующим образом:
operationType [operationName] [variableDefinitions] {
selectionSet
}
, где operationType
- это одно из query
, mutation
или subscription
, operationName
- произвольное имя для вашей операции, используемой при отладке, variableDefinitions
- определения типов для любых переменных, на которые вы ссылаетесь внутри операции. и selectionSet
- это одно или несколько полей, которые вы на самом деле запрашиваете.
В этом случае search
- это поле, которое мы запрашиваем, поэтому оно не должно обрабатываться ключевым словом query
. Это работает нормально, если вы аутентифицированы:
query OptionalName {
search(first: 10, type: ISSUE, query: "repo:angular/angular is:issue state:open") {
issueCount
edges {
# more fields
}
}
}
Если тип операции query
, вы можете вообще пропустить ключевое слово query
. Это называется «стенограммой запроса»:
{
search(first: 10, type: ISSUE, query: "repo:angular/angular is:issue state:open") {
issueCount
edges {
# more fields
}
}
}
Если вы используете переменные, определите их в скобках рядом с вашей операцией. Имена переменных являются произвольными, но по соглашению мы используем имена полей ввода, они будут использоваться в:
query OptionalName ($first: Int, type: SearchType!, $query: String! ) {
search(first: $first, type: $type, query: $query) {
issueCount
edges {
# more fields
}
}
}