欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

GraphQL入门之Schema和类型规范

发布时间:2024/4/13 编程问答 42 豆豆
生活随笔 收集整理的这篇文章主要介绍了 GraphQL入门之Schema和类型规范 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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和类型规范的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。