GraphQL - Hệ thống loại
GraphQL là một ngôn ngữ được đánh máy mạnh. Loại Hệ thống xác định các kiểu dữ liệu khác nhau có thể được sử dụng trong ứng dụng GraphQL. Hệ thống kiểu giúp xác định lược đồ, là một hợp đồng giữa máy khách và máy chủ. Các kiểu dữ liệu GraphQL thường được sử dụng như sau:
Sr.No. | Loại & Mô tả |
---|---|
1 | Scalar Lưu trữ một giá trị duy nhất |
2 | Object Cho biết loại đối tượng nào có thể được tìm nạp |
3 | Query Nhập loại điểm đến các loại cụ thể khác |
4 | Mutation Điểm vào để thao tác dữ liệu |
5 | Enum Hữu ích trong trường hợp bạn cần người dùng chọn từ danh sách các tùy chọn được chỉ định |
Loại vô hướng
Kiểu vô hướng là kiểu dữ liệu nguyên thủy chỉ có thể lưu trữ một giá trị duy nhất. Các loại vô hướng mặc định mà GraphQL cung cấp là:
Int - Số nguyên 32-bit đã ký
Float - Giá trị dấu chấm động chính xác kép có dấu
String - UTF - chuỗi 8 ký tự
Boolean - Đúng hay sai
ID - Một số nhận dạng duy nhất, thường được sử dụng như một số nhận dạng duy nhất để tìm nạp một đối tượng hoặc làm khóa cho bộ nhớ cache.
Cú pháp để xác định một kiểu vô hướng như sau:
field: data_type
Đoạn mã được đưa ra bên dưới xác định một trường có tên là lời chào trả về giá trị Chuỗi.
greeting: String
Loại đối tượng
Kiểu đối tượng là kiểu phổ biến nhất được sử dụng trong lược đồ và đại diện cho một nhóm trường. Mỗi trường bên trong một kiểu đối tượng ánh xạ tới một kiểu khác, do đó cho phép các kiểu lồng nhau. Nói cách khác, một kiểu đối tượng bao gồm nhiều kiểu vô hướng hoặc kiểu đối tượng.
Cú pháp để xác định một loại đối tượng được đưa ra dưới đây:
type object_type_name
{
field1: data_type
field2:data_type
....
fieldn:data_type
}
Bạn có thể xem xét đoạn mã sau:
--Define an object type--
type Student {
stud_id:ID
firstname: String
age: Int
score:Float
}
--Defining a GraphQL schema--
type Query
{
stud_details:[Student]
}
Ví dụ được đưa ra ở trên định nghĩa một đối tượng kiểu dữ liệu là Student. Trường stud_details trong lược đồ Truy vấn gốc sẽ trả về danh sách các đối tượng Sinh viên.
Loại truy vấn
Truy vấn GraphQL được sử dụng để tìm nạp dữ liệu. Nó giống như yêu cầu một tài nguyên trong các API dựa trên REST. Để đơn giản, kiểu Truy vấn là yêu cầu được gửi từ ứng dụng khách đến máy chủ GraphQL. GraphQL sử dụngSchema Definition Language (SDL)để xác định một Truy vấn. Kiểu truy vấn là một trong nhiều kiểu cấp gốc trong GraphQL.
Cú pháp để xác định một Truy vấn như sau:
type Query {
field1: data_type
field2:data_type
field2(param1:data_type,param2:data_type,...paramN:data_type):data_type
}
Một ví dụ về việc xác định một Truy vấn -
type Query {
greeting: String
}
Loại đột biến
Đột biến là các hoạt động được gửi đến máy chủ để create, update hoặc là deletedữ liệu. Chúng tương tự với các động từ PUT, POST, PATCH và DELETE để gọi các API dựa trên REST.
Mutation là một trong những kiểu dữ liệu cấp cơ sở trong GraphQL. Loại Truy vấn xác định các điểm nhập cho các hoạt động tìm nạp dữ liệu trong khi loại Đột biến chỉ định các điểm nhập cho các hoạt động thao tác dữ liệu.
Cú pháp để xác định loại đột biến được đưa ra dưới đây:
type Mutation {
field1: data_type
field2(param1:data_type,param2:data_type,...paramN:data_type):data_type
}
Ví dụ: chúng ta có thể xác định kiểu đột biến để thêm Sinh viên mới như sau:
type Mutation {
addStudent(firstName: String, lastName: String): Student
}
Loại Enum
Một Enum tương tự như một kiểu vô hướng. Enums rất hữu ích trong tình huống mà giá trị của một trường phải từ một danh sách các tùy chọn được chỉ định.
Cú pháp để xác định kiểu Enum là:
type enum_name{
value1
value2
}
Đoạn mã sau minh họa cách một loại enum có thể được xác định:
type Days_of_Week{
SUNDAY
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
}
Loại danh sách
Danh sách có thể được sử dụng để đại diện cho một mảng các giá trị của kiểu cụ thể. Danh sách được định nghĩa với một công cụ sửa đổi kiểu [] bao bọc các kiểu đối tượng, vô hướng và enums.
Cú pháp sau có thể được sử dụng để xác định loại danh sách:
field:[data_type]
Ví dụ dưới đây xác định việc cần làm của loại danh sách -
type Query {
todos: [String]
}
Loại không thể xóa
Theo mặc định, mỗi loại vô hướng lõi có thể được đặt thành null. Nói cách khác, các kiểu này có thể trả về giá trị của kiểu được chỉ định hoặc chúng có thể không có giá trị. Để ghi đè mặc định này và chỉ định rằng một trường phải được xác định, một dấu chấm than (!) Có thể được thêm vào một kiểu. Điều này đảm bảo sự hiện diện của giá trị trong các kết quả được trả về bởi truy vấn.
Cú pháp sau có thể được sử dụng để xác định trường không thể nullable:
field:data_type!
Trong ví dụ dưới đây, stud_id được khai báo là trường bắt buộc.
type Student {
stud_id:ID!
firstName:String
lastName:String
fullName:String
college:College
}