全书目录

第十六篇:GraphQL 完全指南 —— 智能问询总台宇宙

第二章:Schema —— 总台服务手册

1 分钟 240 字 第 306 / 962 个阅读单元

总台不是随便回答问题的,它必须有一本正式服务手册,写清楚:

  • 能问什么
  • 每类问题返回什么格式
  • 能提交哪些变更
  • 哪些字段必填,哪些可空

这本手册,在 GraphQL 里就叫 Schema

先看一个最小总台手册:

graphql
schema {
  query: Query
  mutation: Mutation
}

type Query {
  resident(id: ID!): Resident
  tickets(status: TicketStatus, first: Int = 20): [Ticket!]!
  device(id: ID!): Device
}

type Mutation {
  createTicket(input: CreateTicketInput!): Ticket!
  closeTicket(id: ID!, resolution: String!): Ticket!
}

type Resident {
  id: ID!
  name: String!
  zone: String!
  tickets(status: TicketStatus): [Ticket!]!
}

type Ticket {
  id: ID!
  title: String!
  description: String!
  status: TicketStatus!
  resident: Resident!
  device: Device
  createdAt: String!
}

type Device {
  id: ID!
  name: String!
  location: String!
}

enum TicketStatus {
  OPEN
  IN_PROGRESS
  CLOSED
}

input CreateTicketInput {
  residentId: ID!
  deviceId: ID
  title: String!
  description: String!
}

这份 Schema 的意思是:

  • 总台提供两类入口:QueryMutation
  • 可以查住户、工单、设备
  • 可以创建工单、关闭工单
  • 住户会关联工单,工单会关联设备

你可以把 Schema 理解成:

text
Schema = 总台规则 + 业务词典 + 返回格式合同

GraphQL 项目一旦复杂,Schema 就是前后端协作的共同语言。