Я понимаю принципы запросов через graphql из документов, которые вы могли искать:

{
  "hero": {
    "name": "R2-D2"
  }
}

Но как насчет того, чтобы сделать что-то более сложное, например:

{
  "hero": {
    "name": "R2-D2 AND C-3PO AND BB-8 NOT K-2SO"
  }
}

Есть ли способ передать такую ​​строку и получить соответствующие результаты?

1
JsonP 11 Дек 2018 в 13:40

1 ответ

Лучший ответ

Нет, нет.

Вы можете прочитать спецификацию GraphQL и увидеть, что она определяет, а что не определяет. В частности, спецификация не определяет никакой фильтрации, какого-либо языка выражений или каких-либо логических комбинаторов. (Не существует собственного способа сказать эквивалент SQL WHERE NAME='foo' без явного добавления преобразователя полей.)

То, что GraphQL допускает аргументы поля, является достаточно открытым, чтобы вы могли строить более сложные запросы на его основе, но это очень специфично для некоторого приложения или библиотеки. Двумя яркими примерами являются GitHub GraphQL API (который, как правило, допускает запросы с точным соответствием в выбранных полях, но ничего более богатого) и Prisma API (который имеет задействованную многоуровневую объектную схему для репликации SQL-запросов).

1
David Maze 12 Дек 2018 в 02:13