GraphQL - พิมพ์ระบบ

GraphQL เป็นภาษาที่พิมพ์ยาก Type System กำหนดประเภทข้อมูลต่างๆที่สามารถใช้ในแอปพลิเคชัน GraphQL ระบบชนิดช่วยในการกำหนดสคีมาซึ่งเป็นสัญญาระหว่างไคลเอนต์และเซิร์ฟเวอร์ ประเภทข้อมูล GraphQL ที่ใช้กันทั่วไปมีดังนี้ -

ซีเนียร์ ประเภทและคำอธิบาย
1

Scalar

เก็บค่าเดียว

2

Object

แสดงชนิดของวัตถุที่สามารถดึงข้อมูลได้

3

Query

ประเภทจุดเข้าสู่ประเภทเฉพาะอื่น ๆ

4

Mutation

จุดเริ่มต้นสำหรับการจัดการข้อมูล

5

Enum

มีประโยชน์ในสถานการณ์ที่คุณต้องการให้ผู้ใช้เลือกจากรายการตัวเลือกที่กำหนด

ประเภทสเกลาร์

ประเภทสเกลาร์เป็นชนิดข้อมูลดั้งเดิมที่สามารถจัดเก็บได้เพียงค่าเดียว ประเภทสเกลาร์เริ่มต้นที่ GraphQL เสนอคือ -

  • Int - จำนวนเต็ม 32 บิตที่ลงนาม

  • Float - ลงนามค่าทศนิยมที่มีความแม่นยำสองเท่า

  • String - UTF - ลำดับอักขระ 8 ตัว

  • Boolean - จริงหรือเท็จ

  • ID - ตัวระบุที่ไม่ซ้ำกันซึ่งมักใช้เป็นตัวระบุเฉพาะเพื่อดึงวัตถุหรือเป็นกุญแจสำหรับแคช

ไวยากรณ์สำหรับการกำหนดประเภทสเกลาร์มีดังนี้ -

field: data_type

ตัวอย่างข้อมูลที่ระบุด้านล่างนี้กำหนดฟิลด์ที่ชื่อคำทักทายซึ่งส่งคืนค่าสตริง

greeting: String

ประเภทวัตถุ

ประเภทออบเจ็กต์เป็นประเภทที่ใช้บ่อยที่สุดในสคีมาและแสดงถึงกลุ่มของฟิลด์ แต่ละฟิลด์ภายในชนิดอ็อบเจ็กต์จะแมปกับประเภทอื่นซึ่งจะอนุญาตให้มีประเภทที่ซ้อนกัน กล่าวอีกนัยหนึ่งประเภทวัตถุประกอบด้วยประเภทสเกลาร์หรือประเภทวัตถุหลายประเภท

ไวยากรณ์สำหรับการกำหนดประเภทวัตถุมีดังต่อไปนี้ -

type object_type_name
{
   field1: data_type
   field2:data_type 
   ....
   fieldn:data_type
}

คุณสามารถพิจารณาข้อมูลโค้ดต่อไปนี้ -

--Define an object type--

type Student {
   stud_id:ID
   firstname: String
   age: Int
   score:Float
}

--Defining a GraphQL schema--  

type Query
{
   stud_details:[Student]
}

ตัวอย่างที่ให้ไว้ข้างต้นกำหนดนักเรียนประเภทข้อมูลวัตถุ stud_detailsฟิลด์ในรากแบบสอบถามสคีจะกลับรายการของวัตถุนักศึกษา

ประเภทการสืบค้น

แบบสอบถาม GraphQL ใช้เพื่อดึงข้อมูล มันเหมือนกับการร้องขอทรัพยากรใน REST-based APIs เพื่อให้ง่ายประเภท Query คือคำขอที่ส่งจากแอปพลิเคชันไคลเอนต์ไปยังเซิร์ฟเวอร์ GraphQL GraphQL ใช้ไฟล์Schema Definition Language (SDL)เพื่อกำหนดการสืบค้น ประเภทการสืบค้นเป็นหนึ่งในประเภทระดับรากจำนวนมากใน GraphQL

ไวยากรณ์สำหรับการกำหนดแบบสอบถามมีดังต่อไปนี้ -

type Query {
   field1: data_type
   field2:data_type
   field2(param1:data_type,param2:data_type,...paramN:data_type):data_type
}

ตัวอย่างของการกำหนดแบบสอบถาม -

type Query  {
   greeting: String
}

ประเภทการกลายพันธุ์

การกลายพันธุ์คือการดำเนินการที่ส่งไปยังเซิร์ฟเวอร์เพื่อ create, update หรือ deleteข้อมูล. สิ่งเหล่านี้คล้ายคลึงกับคำกริยา PUT, POST, PATCH และ DELETE เพื่อเรียก API ที่ใช้ REST

การกลายพันธุ์เป็นหนึ่งในประเภทข้อมูลระดับรูทใน GraphQL ประเภทแบบสอบถามกำหนดจุดเริ่มต้นสำหรับการดำเนินการดึงข้อมูลในขณะที่ประเภทการกลายพันธุ์ระบุจุดเข้าใช้งานสำหรับการดำเนินการจัดการข้อมูล

ไวยากรณ์สำหรับการกำหนดประเภทการกลายพันธุ์แสดงไว้ด้านล่าง -

type Mutation {
   field1: data_type
   field2(param1:data_type,param2:data_type,...paramN:data_type):data_type 
}

ตัวอย่างเช่นเราสามารถกำหนดประเภทการกลายพันธุ์เพื่อเพิ่ม Student ใหม่ได้ดังต่อไปนี้ -

type Mutation {
   addStudent(firstName: String, lastName: String): Student
}

ประเภท Enum

Enum คล้ายกับประเภทสเกลาร์ Enums มีประโยชน์ในสถานการณ์ที่ค่าสำหรับฟิลด์ต้องมาจากรายการตัวเลือกที่กำหนด

ไวยากรณ์สำหรับการกำหนดประเภท Enum คือ -

type enum_name{
   value1
   value2
}

ตัวอย่างต่อไปนี้แสดงให้เห็นว่าสามารถกำหนดประเภท enum ได้อย่างไร -

type Days_of_Week{
   SUNDAY
   MONDAY
   TUESDAY
   WEDNESDAY
   THURSDAY
   FRIDAY
   SATURDAY
}

ประเภทรายการ

รายการสามารถใช้เพื่อแสดงอาร์เรย์ของค่าเฉพาะประเภท รายการถูกกำหนดด้วยตัวปรับแต่งชนิด [] ที่ตัดประเภทอ็อบเจ็กต์สเกลาร์และ enums

สามารถใช้ไวยากรณ์ต่อไปนี้เพื่อกำหนดประเภทรายการ -

field:[data_type]

ตัวอย่างด้านล่างกำหนดประเภทรายการสิ่งที่ต้องทำ -

type Query {
   todos: [String]
}

ประเภทที่ไม่เป็นโมฆะ

โดยค่าเริ่มต้นสเกลาร์หลักแต่ละประเภทสามารถตั้งค่าเป็น null ได้ กล่าวอีกนัยหนึ่งประเภทเหล่านี้สามารถส่งคืนค่าของประเภทที่ระบุหรือไม่มีค่าก็ได้ ในการแทนที่ค่าเริ่มต้นนี้และระบุว่าต้องกำหนดฟิลด์คุณสามารถเพิ่มเครื่องหมายอัศเจรีย์ (!) เข้ากับประเภทได้ สิ่งนี้ช่วยให้มั่นใจได้ถึงการมีอยู่ของค่าในผลลัพธ์ที่ส่งคืนโดยแบบสอบถาม

คุณสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อกำหนดเขตข้อมูลที่ไม่เป็นค่าว่างได้ -

field:data_type!

ในตัวอย่างด้านล่างstud_idถูกประกาศให้เป็นฟิลด์บังคับ

type Student {
   stud_id:ID!
   firstName:String
   lastName:String
   fullName:String
   college:College
}