本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
GraphQL 欄位
欄位存在於 類型的範圍內,並保留從 GraphQL 服務請求的值。這些與其他程式設計語言的變數非常相似。例如,以下是Person
物件類型:
type Person { name: String age: Int }
在此情況下,欄位分別是 name
和 ,age
並保留 String
和 Int
值。如上所示的物件欄位可以用作查詢和突變欄位 (操作) 中的輸入。例如,請參閱Query
下列內容:
type Query { people: [Person] }
people
欄位正在Person
從資料來源請求 的所有執行個體。當您在 GraphQL 伺服器Person
中新增或擷取 時,您可以預期資料會遵循您類型和欄位的格式,也就是說,結構描述中資料的結構會決定如何在回應中建構資料:
} "data": { "people": [ { "name": "John Smith", "age": "50" }, { "name": "Andrew Miller", "age": "60" }, . . . ] } }
欄位在建構資料中扮演重要角色。下面說明了幾個額外的屬性,可以套用至欄位,以進行更多自訂。
清單
清單會傳回指定類型的所有項目。您可以使用括號 將清單新增至欄位的類型[]
:
type Person { name: String age: Int } type Query { people: [Person] }
在 中Query
,週圍括號Person
表示您想要Person
從資料來源傳回 的所有執行個體作為陣列。在回應中,每個 的 name
和 age
值Person
會以單一分隔清單的形式傳回:
} "data": { "people": [ { "name": "John Smith", # Data of Person 1 "age": "50" }, { "name": "Andrew Miller", # Data of Person 2 "age": "60" }, . # Data of Person N . . ] } }
您不限於特殊物件類型。您也可以在一般物件類型的欄位中使用清單。
非空值
非空值表示回應中不可為空的欄位。您可以使用 !
符號將欄位設定為非空值:
type Person { name: String! age: Int } type Query { people: [Person] }
name
欄位不能明確為 null。如果您要查詢資料來源,並為此欄位提供 null 輸入,則會擲回錯誤。
您可以合併清單和非空值。比較這些查詢:
type Query { people: [Person!] # Use case 1 } . . . type Query { people: [Person]! # Use case 2 } . . . type Query { people: [Person!]! # Use case 3 }
在使用案例 1 中,清單不能包含 null 項目。在使用案例 2 中,清單本身無法設定為 null。在使用案例 3 中,清單及其項目不能為 null。不過,無論如何,您仍然可以傳回空白清單。