Понимание GraphQL - PullRequest
       0

Понимание GraphQL

1 голос
/ 15 февраля 2020

Я начал экспериментировать с GraphQL wp api.

Я запрашиваю меню. Что касается документации, запрос очень длинный

Я ожидаю, что запрос

{
    menus
}

приведет только ко всем данным, вложенным в меню, но не к нему.

Почему это? Как получить все вложенные данные в объекте, чтобы увидеть, что там находится?

Спасибо за потраченное время

Ответы [ 3 ]

3 голосов
/ 15 февраля 2020

Правило состоит в том, что все "листовые" поля в запросе GraphQL должны быть Scalar что-то вроде Int, Boolean, String et c. Таким образом, если поле meuns в типе root Query имеет тип Scalar, это допустимый запрос, который вернет вам что-то.

Если нет, вам придется продолжить навигацию по Menu введите и выберите поля, которые вы хотите включить в запрос GraphQL, например:

{
   menus {
     id
     createdDate
  }
}

Не существует подстановочного знака, который может представлять все поля в текущем GraphQL spe c. Вы должны явно объявить все поля, которые вы хотите выбрать в запросе. Просматривая схему GraphQL, вы можете узнать доступные поля для каждого типа. Одним из советов является использование системы интроспекции GraphQL . В основном это означает, что вы можете использовать некоторые из клиентов GraphQL, такие как Altair , Graphiql или GraphQL Playground et c. У большинства из них есть функция автоматического предложения, которая поможет вам составить запрос, предложив вам, какие поля доступны для включения в тип.

PS Аналогия с SQL в том, что нет select * from foo, вы должны явно определить столбцы, которые вы хотите выбрать в предложении выбора, такие как select id,name,address from foo.

2 голосов
/ 15 февраля 2020

Если вы помните, что получаете объект JSON, вы можете думать о своем запросе GraphQL как об определении левой части ответа (это преднамеренно в том, как он был спроектирован), например, просто ключи. Таким образом, если нет нулевых значений, то, что вы получите, должно точно соответствовать форме запроса.

Если вы хотите увидеть, что может запросить , вам необходим доступ к самой схеме. Если это схема, предоставленная кем-то другим (в данном случае выглядит как WordPress), они также должны были предоставить средства для ее изучения и понимания.

1 голос
/ 15 февраля 2020

Это main функция GraphQL, вы можете указать, какие данные вам нужны из запроса. И из-за этого вы не можете просто запросить меню таким образом, вам нужно указать каждое вложенное поле в нужных вам меню, и только тогда оно будет работать:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...