Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Конечные точки GraphQL в построителе API данных (DAB) позволяют запрашивать и изменять данные с точностью. Каждый запрос указывает, какие именно поля нужны, и поддерживает аргументы для фильтрации, упорядочивания и постраничной навигации.
По умолчанию DAB размещает конечную точку GraphQL по адресу:
https://{base_url}/graphql
Сущности, предоставляемые с помощью конфигурации, автоматически включаются в схему GraphQL.
Например, если у вас есть books и authors сущности, оба отображаются в качестве корневых полей в схеме.
Замечание
Используйте любой современный клиент GraphQL или интегрированную среду разработки (например, Apollo, Бессонница или VS Code GraphQL) для изучения схемы и полей автозаполнения.
Ключевые слова, поддерживаемые в построителе API данных
| Понятие | GraphQL | Цель |
|---|---|---|
| Projection | items | Выберите возвращаемые поля |
| Filtering | фильтр | Ограничение строк по условию |
| Сортировка | orderBy | Определение порядка сортировки |
| Размер страницы | first | Ограничение элементов на страницу |
| Продолжение | после | Продолжить с последней страницы |
Базовая структура
Каждый запрос GraphQL начинается с корневого поля, представляющего сущность.
{
books {
items {
id
title
price
}
}
}
Результатом является объект JSON с той же фигурой, что и набор выбора:
{
"data": {
"books": {
"items": [
{ "id": 1, "title": "Dune", "price": 20 },
{ "id": 2, "title": "Foundation", "price": 18 }
]
}
}
}
Замечание
По умолчанию DAB возвращает до 100 элементов на запрос, если не настроено в противном случае (runtime.pagination.default-page-size).
Типы запросов
Каждая сущность поддерживает два стандартных корневых запроса:
| Query | Описание |
|---|---|
entity_by_pk |
Возвращает одну запись по первичному ключу |
entities |
Возвращает список записей, соответствующих фильтрам |
Пример возврата одной записи:
{
book_by_pk(id: 1010) {
title
year
}
}
Пример возврата множества:
{
books {
items {
id
title
}
}
}
Фильтрация результатов
filter Используйте аргумент, чтобы ограничить возвращаемые записи.
{
books(filter: { title: { contains: "Foundation" } }) {
items { id title }
}
}
Этот запрос возвращает все книги, название которых содержит "Foundation".
Фильтры могут объединять сравнения с логическими операторами:
{
authors(filter: {
or: [
{ first_name: { eq: "Isaac" } }
{ last_name: { eq: "Asimov" } }
]
}) {
items { first_name last_name }
}
}
См. ссылку на аргумент фильтра для поддерживаемых операторов, таких как eq, neq, ltи lteisNull.
Сортировка результатов
Аргумент orderBy определяет порядок сортировки записей.
{
books(orderBy: { year: DESC, title: ASC }) {
items { id title year }
}
}
Возвращаются книги, упорядоченные по year по убыванию, а затем по title.
См. справочник по аргументу orderBy для подробностей.
Ограничение результатов
Аргумент first ограничивает количество записей, возвращаемых в одном запросе.
{
books(first: 5) {
items { id title }
}
}
Это возвращает первые пять книг, упорядоченных по первичному ключу по умолчанию.
Вы также можете использовать first: -1 для запроса максимального размера страницы, установленного в настройках.
Дополнительные сведения см. в первом справочнике по аргументам.
Продолжение результатов
Чтобы получить следующую страницу, используйте after аргумент с курсором из предыдущего запроса.
{
books(first: 5, after: "eyJpZCI6NX0=") {
items { id title }
}
}
Маркер after помечает место окончания предыдущей страницы.
Дополнительные сведения см. в справочнике по аргументам .
Выбор поля (проекция)
В GraphQL вы выбираете точно, какие поля отображаются в ответе.
Такого подстановочного знака, как SELECT *, не существует. Запросить только то, что вам нужно.
{
books {
items { id title price }
}
}
Вы также можете использовать псевдонимы для переименования полей в ответе:
{
books {
items {
bookTitle: title
cost: price
}
}
}
См. справочник по проекции полей для получения подробной информации.