GraphQL API:查询和变更
虽然 REST 非常适合标准集成,但现代 Headless 架构(如 Next.js、Nuxt.js 或 Gatsby)通常受益于 GraphQL 的精度。
PolyCMS 提供了一个强大的 GraphQL 端点,由“Nuwave/Lighthouse”提供支持,允许您的前端“准确”地请求它所需的数据——不多也不少。
GraphQL 端点位于:http://localhost:8000/graphql
## 验证
GraphQL API 的身份验证工作方式与 REST API 完全相同。您必须在 Authorization 标头中传递 Laravel Sanctum Bearer 令牌。
Authorization: Bearer YOUR_TOKEN_HERE
GraphQL 游乐场
为了以交互方式探索架构和测试查询,PolyCMS 包含 GraphQL 游乐场。
在本地开发环境中,导航到“http://localhost:8000/graphql”以查看自记录模式并编写测试查询。 (注意:为了安全起见,在生产环境中禁用此端点)。
编写查询
查询用于从系统读取数据。
示例:获取分页帖子列表
此查询获取前 10 个已发布的帖子,包括它们的标题、slugs 以及它们所属类别的名称。请注意我们如何通过仅专门请求我们需要的字段来避免过度获取。
query {
posts(first: 10, status: "publish") {
data {
id
title
slug
categories {
name
}
}
paginatorInfo {
currentPage
lastPage
total
}
}
}
示例:通过 Slug 获取单个产品
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,我们建议在与 PolyCMS GraphQL 端点通信时使用 Apollo Client(适用于 React/Vue)或 URQL 等 GraphQL 客户端来处理缓存、状态管理和请求批处理。