2015-12-01 55 views
4

請原諒這個天真的問題,但我已經找遍了所有的答案,我發現的一切都是模糊的或對我沒有意義。以GraphQL規範中的示例爲例:在GraphQL中命名查詢和突變有什麼意義?

query getZuckProfile($devicePicSize: Int) { 
    user(id: 4) { 
    id 
    name 
    profilePic(size: $devicePicSize) 
    } 
} 

命名此查詢有什麼意義?我看到一些關於包含多個操作的GraphQL文檔。命名查詢是否影響返回的數據?我會自己測試一下,但是我沒有可以輕鬆玩的服務器和數據集來進行實驗。但是,如果某個文檔中的某些內容能夠澄清這一點,那將會很好 - 迄今爲止,所有示例都是超簡單的單個查詢,或者是已命名的查詢,但並不能解釋它們爲什麼(除了「這裏是一個很酷的你可以做的事情「。)當我發送每個請求的單個匿名查詢時,從命名查詢中獲得什麼好處?

此外,關於突變,我看到在規格:

mutation setName { 
    setName(name: "Zuck") { 
    newName 
    } 
} 

在這種情況下,你指定setName兩次。爲什麼?我得到的,其中之一是突變的字段名稱和需要匹配到後端的架構,但爲什麼不:

mutation { 
    setName(name: "Zuck") { 
... 

我可以得到什麼好處指定兩次相同的名稱?我知道第一個可能是任意的,但爲什麼它不是噪音?我必須錯過一些明顯的東西,但是迄今爲止我找不到的東西已經爲我清除了。

回答

4

查詢名稱在服務器上沒有任何含義。它僅用於客戶端識別響應(因爲您可以在單個請求中發送多個查詢/突變)。

事實上,你可以,如果這是在GraphQL要求的唯一的事情(和沒有任何參數)僅發送匿名查詢對象:

{ 
    user(id: 4) { 
    id 
    name 
    profilePic(size: $devicePicSize) 
    } 
} 

這隻適用於查詢,而不是突變。

一旦您使用query(或mutation)關鍵字,但您需要提供一個名稱。即使沒有名字,服務器理論上也可以處理請求,但這不是當前的GraphQL規範允許的。