Schema 里最重要的基本单位就是 Type。
Type 就像总台能识别的“业务卡片类型”。
常见 Type 有这几类:
type表示对象类型,比如Resident、Ticket、Devicescalar表示叶子值,比如String、Int、Boolean、IDenum表示有限选项,比如工单状态OPEN / IN_PROGRESS / CLOSEDinput表示提交变更时的输入结构列表和非空修饰
[Ticket]:可空列表,里面元素也可空[Ticket!]:列表可空,但元素不可空[Ticket!]!:列表不可空,元素也不可空String!:这个字段承诺不返回null
关系图:
Resident
├── id: ID!
├── name: String!
├── zone: String!
└── tickets: [Ticket!]!
Ticket
├── id: ID!
├── title: String!
├── status: TicketStatus!
├── resident: Resident!
└── device: Device
Device
├── id: ID!
├── name: String!
└── location: String!这里最重要的认知是:
GraphQL 不是围绕 URL 建模,而是围绕“业务对象及其关系”建模。
也就是说,总台不是按“窗口地址”思考,而是按“住户、工单、设备之间如何关联”思考。