GraphQL API: запросы и мутации
Хотя REST отлично подходит для стандартной интеграции, современные архитектуры без головы (например, Next.js, Nuxt.js или Gatsby) часто выигрывают от точности GraphQL.
PolyCMS предоставляет надежную конечную точку GraphQL на базе Nuwave/Lighthouse, позволяющую вашему интерфейсу запрашивать точно те данные, которые ему нужны — ни больше, ни меньше.
Конечная точка GraphQL находится по адресу: http://localhost:8000/graphql.
Аутентификация
Аутентификация для API GraphQL работает точно так же, как и для REST API. Вы должны передать токен Laravel Sanctum Bearer в заголовке авторизации.
Authorization: Bearer YOUR_TOKEN_HERE
Игровая площадка GraphQL
Для интерактивного изучения схемы и тестирования запросов PolyCMS включает игровую площадку GraphQL.
В вашей локальной среде разработки перейдите по адресу http://localhost:8000/graphql, чтобы просмотреть самодокументируемую схему и написать тестовые запросы. (Примечание: эта конечная точка отключена в производственных средах в целях безопасности).
Написание запросов
Запросы используются для чтения данных из системы.
Пример: получение постраничного списка сообщений
Этот запрос извлекает первые 10 опубликованных сообщений, включая их заголовки, фрагменты и названия категорий, к которым они принадлежат. Обратите внимание, как мы избегаем избыточной выборки, запрашивая только те поля, которые нам нужны.
query {
posts(first: 10, status: "publish") {
data {
id
title
slug
categories {
name
}
}
paginatorInfo {
currentPage
lastPage
total
}
}
}
Пример: получение одного продукта по слагу
query {
product(slug: "iphone-15-pro") {
id
name
price
description_html
stock_status
}
}
Написание мутаций
Мутации используются для создания, обновления или удаления данных.
Пример: создание голосования за контент (реакция)
PolyCMS имеет общую систему голосования за контент. Вот как фронтенд-приложение может отправить «полезный» голос через GraphQL:
mutation {
createContentVote(
votable_type: "App\\Models\\Post",
votable_id: 42,
type: "helpful",
ip_address: "192.168.1.1"
) {
id
type
created_at
}
}
Интеграция с внешними интерфейсами
Если вы создаете Headless SPA, мы рекомендуем использовать клиент GraphQL, например Apollo Client (для React/Vue) или URQL, для кэширования, управления состоянием и пакетной обработки запросов при взаимодействии с конечной точкой PolyCMS GraphQL.