優(yōu)點:
1 .一次返回所有數(shù)據(jù)。不需要多個接口。
- 只返回想要的屬性,不會獲取多余的屬性。
測試工具 GraphiQL 。 測試地址:http://snowtooth.moonhighway.com
1. 最簡單的查詢。
查詢出所有電梯(lifts
)的 name 和 staus 兩個屬性,
allLifts ......等 被大括號括起來,叫做選擇集(selection set),選擇集之間也可以相互嵌套。(這些可以查看測試地址的docs)
query {
allLifts {
name
status
}
}
2. 多個查詢,條件查詢
查詢所有開啟狀態(tài)的電梯總數(shù)liftCount
;以及所有的電梯和纜車(trails
)
query liftsAndTrails {
liftCount (status: OPEN)
allLifts {
name
status
}
allTrails {
name
difficulty
}
}
查詢結(jié)果大概如圖所示。
{
"data": {
"liftCount": 10,
"allLifts": [
{
"name": "Astra Express",
"status": "HOLD"
},
// 省略 ......
],
"allTrails": [
{
"name": "Blue Bird",
"difficulty": "intermediate"
},
// 省略 ......
]
}
}
3.指定別名
默認返回json 數(shù)據(jù)的字段名和選擇集中的一直。也可以指定別名。將返回數(shù)據(jù)中的liftCount
重命名為 open
,allLifts
重命名為 chairLifts
。
query liftsAndTrails {
open:liftCount (status: OPEN)
chairLifts: allLifts {
name
status
}
allTrails {
name
difficulty
}
}
4. 條件查詢和排序
篩選出 狀態(tài)為 HOLD 的數(shù)據(jù)
query closedLifts {
allLifts (status: HOLD){
name
status
}
}
查詢 名字為jazz-cat
的電梯的屬性
query oneLift {
Lift (id: "jazz-cat"){
name
status
night
elevationGain
}
}
5. 邊和連接
相當于sql 數(shù)據(jù)庫查詢時候關聯(lián)表。trailAccess 是 Lift 的一個屬性,但是他的類型是 Trail
query tailsAccessByJazzCat {
Lift (id: "jazz-cat"){
name
status
night
elevationGain
capacity
trailAccess {
name
difficulty
}
}
}
6. 片段fragment
白話就是抽取出公用的屬性,方便統(tǒng)一修改。
eg: 我在兩個地方都需要使用 Trail 里面的 name 和 difficulty 屬性。那么我們就把他寫成一個片段。
// 這就是一個片段
fragment TrailInfo on Trail {
name
difficulty
}
query {
Lift (id: "jazz-cat"){
name
status
night
elevationGain
capacity
trailAccess {
...TrailInfo
}
}
Trail (id: "river-run"){
...TrailInfo
}
}