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
}