優(yōu)點(diǎn):
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.指定別名
默認(rèn)返回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. 邊和連接
相當(dāng)于sql 數(shù)據(jù)庫查詢時候關(guān)聯(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
}
}