2017-09-22 34 views
0

在阿波羅開發者文檔中有GraphQL對POST請求的有效體爲例你能解釋的術語在GraphQL POST請求

{ 
    "query": "query aTest($arg1: String!) { test(who: $arg1) }" 
} 

從我在阿波羅服務器已經看到了這條查詢也可以使用:

{ 
    "query": "aTest($arg1: String!) { test(who: $arg1) }" 
} 

有人能解釋爲什麼「query」在第一個例子中出現兩次? GraphQL服務器從這裏解釋什麼?

第二個例子是標準化格式嗎?

價:http://dev.apollodata.com/tools/graphql-server/requests.html

回答

1

查詢可以在GraphQL兩種含義 - 它可以是指該請求向服務器發出,或於該請求中使用的操作的類型。在GraphQL中有三種類型的操作 - 查詢,變異和訂閱。

在第一個示例中,第一query標識查詢文檔被與請求一起發送。第二個query標識操作的類型。

換句話說,您可以查詢服務器,但您的查詢可能包含也可能不包含查詢(例如,它可能是一個突變)。當你編寫你的查詢時,如果你省略了操作的類型,GraphQL只是假定你想要一個查詢,而不是其他一些操作,並且隨它一起滾動。以類似的方式,也可以省略操作名稱aTest)。 AFAIK,省略操作名稱沒有任何好處 - 您應該始終包含它以防止任何含糊不清和潛在的問題。