GraphQL入门之Schema和类型规范
生活随笔
收集整理的這篇文章主要介紹了
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和类型规范的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GraphQL入门之GraphQL查询的
- 下一篇: GraphQL入门之graphql-ja