GraphQL的Schema 和类型规范

Schema 是用于定义数据结构的,比如说,User对象中有哪些属性,对象与对象之间是什么关系等。

参考官网文档:http://graphql.cn/learn/schema/

Schema定义结构

schema { #定义查询query: UserQuery
}
type UserQuery { #定义查询的类型user(id:ID) : User #指定对象以及参数类型
}
type User { #定义对象id:ID! # !表示该属性是非空项name:Stringage:Int
}

标量类型(Scalar Types)

GraphQL规范中,默认定义了5种类型:

Int :有符号 32 位整数。
Float :有符号双精度浮点值。
String :UTF‐8 字符序列。
Boolean : true 或者 false 。
ID :ID 标量类型表示一个唯一标识符,通常用以重新获取对象或者作为缓存中的键。

规范中定义的这5种类型,显然是不能满足需求的,所以在各种语言实现中,都有对类型进行了扩充,也就是GraphQL支持自定义类型,比如在graphql-java实现中增加了:Long、Byte等。

枚举类型

枚举类型是一种特殊的标量,它限制在一个特殊的可选值集合内。

enum Episode { #定义枚举NEWHOPEEMPIREJEDI
}
type Human {id: ID!name: String!appearsIn: [Episode]! #使用枚举类型homePlanet: String
}

接口(interface)

跟许多类型系统一样,GraphQL 支持接口。一个接口是一个抽象类型,它包含某些字段,而对象类型必须包含这些字段,才能算实现了这个接口。

例如,你可以用一个 Character 接口用以表示《星球大战》三部曲中的任何角色:

interface Character { #定义接口id: ID!name: String!friends: [Character]appearsIn: [Episode]!
}
#实现接口
type Human implements Character {id: ID!name: String!friends: [Character]appearsIn: [Episode]!starships: [Starship]totalCredits: Int
}
type Droid implements Character {id: ID!name: String!friends: [Character]appearsIn: [Episode]!primaryFunction: String
}

GraphQL入门之Schema和类型规范相关推荐

  1. 【ReactJs+springBoot项目——租房】第3章:OSS存储图片+本地存储+ 房源列表查询+GraphQL入门

    图片存储解决方案的分析 阿里云OSS存储方案的实现 本地存储方案的实现 整合前端系统实现图片上传功能 实 现 房 源 列 表 查 询 功 能 GraphQL的入门 1.图片存储解决方案 在新增房源中, ...

  2. GraphQL 入门

    ## GraphQL 入门 GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义).GraphQL 并没有和任何特定数据库或者存储引擎 ...

  3. GraphQL入门基础篇教程

    历史        GraphQL是由Facebook创造的. 当时,Facebook想在移动端实现新闻推送,这不像检索一个故事.作者.故事的内容.评论列表和喜欢该文章的人这么简单,而是每个故事都相互 ...

  4. graphql入门_GraphQL入门指南

    graphql入门 by Leonardo Maldonado 莱昂纳多·马尔多纳多(Leonardo Maldonado) GraphQL入门指南 (A Beginner's Guide to Gr ...

  5. GraphQL 入门第一篇

    GraphQL 入门 在接下来的一系列文章中,我们会了解 GraphQL 是什么,它是如何运作以及如何使用它.在找如何搭建 GraphQL 服务的文档?这有一些类库可以帮你用多种不同语言实现 Grap ...

  6. iPhone开发入门守则:Objective-C编码规范--系列教程

    iPhone开发入门守则:Objective-C编码规范(1) iPhone开发入门守则:Objective-C编码规范(2) iPhone开发入门守则:Objective-C编码规范(3) iPho ...

  7. GraphQL入门之进一步了解GraphQL

    进一步了解GraphQL GraphQL很好的解决了RESTful在使用过程中的不足,接下来,我们进一步了解下它. 按需索取数据,避免浪费 演示地址:http://graphql.cn/learn/s ...

  8. 从graphql endpoint获取schema文件

    graphql server端有更新,client端需要重新获取schema文件用于创建新的api request,下面简要记录如何从graphql endpoint获取schema文件 You ca ...

  9. 5.TypeScript入门之TS高级类型(class类)

    上一章节:4.TypeScript入门之TS常用类型(3) Ⅳ.TypeScript高级类型 概述 TS中的高级类型有很多,重点学习以下高级类型: class类 类型兼容性 交叉类型 泛型和 keyo ...

最新文章

  1. 欠阿里云一分钱,会是什么样的后果...
  2. 利用Libra进行机器学习和深度学习
  3. WPF-数据绑定:日期时间格式
  4. asterisk libxml2
  5. 对SqlServer2008中的日志进行截断的方法
  6. 通达信手机版指标源码大全_通达信指标公式源码短炒买卖指标
  7. Activity之间传递参数
  8. ORACLE——ROWNUM解析(使用ROWNUM大于条件,无法得到任何查询结果)
  9. .gitignore和“以下未跟踪的工作树文件将被签出覆盖”
  10. OpenGL基础11:空间
  11. jquery知识点总结(转载)
  12. Python设置32位环境
  13. linux用户态内核态通信,内核态与用户态通信 之 sockopt
  14. bzoj 1467 exBSGS
  15. 中创生日会 | 烟火向星辰,所愿皆成真
  16. 软件测试有白和黑盒和灰盒,白盒测试、灰盒测试和黑盒测试的区别
  17. 2022年十三届蓝桥杯国赛将至,来看看去年蓝桥杯C++b组国赛题目如何
  18. QTableView中添加icon
  19. Latex系列2---段落编写+标题编写+目录生成
  20. GraphQL实战-第一篇-GraphQL介绍

热门文章

  1. 在C#中怎么调用Resources文件中的图片
  2. 转: 关于流量控制与令牌桶介绍
  3. C语言基础:C语言宏定义(4) - 多文件编译
  4. 基于VC的OPC客户端软件研究与实现
  5. 访问IIS时,名称以无效字符开头。。。解决方案
  6. Mysql导入数据时-data truncated for column..
  7. POJ 1904 King's Quest(强连通图)题解
  8. Jenkins+Gradle+Git自动打apk包,并上传到ftp
  9. jQuery如何选择表格每行中的第三列?
  10. tab切换实现方式1