QueryBuilder
Новий клас QueryBuilder у NGql призначений для спрощення створення та роботи в цілому з GraphQL запитами.
Він надає зручний інтерфейс для побудови складних запитів, дозволяючи розробникам легко додавати поля, аргументи та вкладені запити до своїх запитів.
Крапконотація
Починаючи з версії 1.5.0 розробнику стає доступна "крапконотація" (dot-notation) для запису полів та вкладених полів.
var builder = QueryBuilder
.CreateDefaultBuilder("GetUsers")
.AddField("users.name")
.AddField("users.email");
query GetUsers {
users {
name
email
}
}
це економить час та спрощує написання коду для побудови складних запитів.
Типізація полів
Базовий синтаксис додавання поля через .AddField(...) приймає рядок, наступного формату:
{typeMarker}? {alias}?:{fieldName}
де:
-
{typeMarker}?- необовʼязковий маркер типу (наприклад,User,[String!], і тд), який визначає тип обʼєкта, на який вказує останній сегмент шляху (після останньої крапки, якщо така є).Якщо не вказано, тип буде визначено як
String. Якщо в подальшому поле містиме вкладені поля, тип буде перевизначено якObject.?- необовʼязковий м аркер, який вказує, що поле є необовʼязковим (nullable).[]- маркер масиву (array), який вказує, що поле є масивом. -
alias- необовʼязковий псевдонім для поля, який буде використаний у запиті. -
fieldName- імʼя поля або шлях до вкладеного поля, розділений крапками. Може містити вкладені псевдоніми.
var query = QueryBuilder
.CreateDefaultBuilder("TypedUserQuery")
.AddField("UserProfile user.profile")
.AddField("String user.name")
.AddField("Int user.age")
.AddField("[] user.tags") // Array marker
.AddField("Post[] user.posts"); // Typed array
query GetUsers {
users {
name
email
}
}