GraphQL入门之Schema和类型规范
GraphQL的Schema 和類型規(guī)范
Schema 是用于定義數(shù)據(jù)結(jié)構(gòu)的,比如說,User對象中有哪些屬性,對象與對象之間是什么關(guān)系等。
參考官網(wǎng)文檔:http://graphql.cn/learn/schema/
Schema定義結(jié)構(gòu)
schema { #定義查詢query: UserQuery } type UserQuery { #定義查詢的類型user(id:ID) : User #指定對象以及參數(shù)類型 } type User { #定義對象id:ID! # !表示該屬性是非空項(xiàng)name:Stringage:Int }標(biāo)量類型(Scalar Types)
GraphQL規(guī)范中,默認(rèn)定義了5種類型:
Int :有符號 32 位整數(shù)。
Float :有符號雙精度浮點(diǎn)值。
String :UTF‐8 字符序列。
Boolean : true 或者 false 。
ID :ID 標(biāo)量類型表示一個唯一標(biāo)識符,通常用以重新獲取對象或者作為緩存中的鍵。
規(guī)范中定義的這5種類型,顯然是不能滿足需求的,所以在各種語言實(shí)現(xiàn)中,都有對類型進(jìn)行了擴(kuò)充,也就是GraphQL支持自定義類型,比如在graphql-java實(shí)現(xiàn)中增加了:Long、Byte等。
枚舉類型
枚舉類型是一種特殊的標(biāo)量,它限制在一個特殊的可選值集合內(nèi)。
enum Episode { #定義枚舉NEWHOPEEMPIREJEDI } type Human {id: ID!name: String!appearsIn: [Episode]! #使用枚舉類型homePlanet: String }接口(interface)
跟許多類型系統(tǒng)一樣,GraphQL 支持接口。一個接口是一個抽象類型,它包含某些字段,而對象類型必須包含這些字段,才能算實(shí)現(xiàn)了這個接口。
例如,你可以用一個 Character 接口用以表示《星球大戰(zhàn)》三部曲中的任何角色:
interface Character { #定義接口id: ID!name: String!friends: [Character]appearsIn: [Episode]! } #實(shí)現(xiàn)接口 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 }?
總結(jié)
以上是生活随笔為你收集整理的GraphQL入门之Schema和类型规范的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GraphQL入门之GraphQL查询的
- 下一篇: GraphQL入门之graphql-ja