Back to Main Site

GraphQL API: запросы и мутации

Last updated on Jun 24, 2026 01:40

Хотя 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.