GraphQL เป็นภาษาคิวรีโอเพนซอร์สและรันไทม์สำหรับ API (Application Programming Interfaces) ที่พัฒนาโดย Facebook และต่อมาเป็นโอเพนซอร์ส เป็นวิธีที่มีประสิทธิภาพและยืดหยุ่นมากขึ้นสำหรับลูกค้าในการร้องขอและดึงข้อมูลจากเซิร์ฟเวอร์ ซึ่งแตกต่างจาก REST APIs แบบดั้งเดิมตรงที่ไคลเอนต์ได้รับโครงสร้างข้อมูลคงที่ GraphQL ช่วยให้ไคลเอนต์สามารถระบุข้อมูลที่ต้องการได้อย่างแม่นยำ ลดการดึงข้อมูลเกินและดึงข้อมูลน้อยเกินไป
ต่อไปนี้เป็นแนวคิดหลักและคุณสมบัติบางประการของ GraphQL:
Typed Schema: GraphQL ใช้ระบบประเภทที่แข็งแกร่งเพื่อกำหนดความสามารถของ API เซิร์ฟเวอร์กำหนดสคีมาที่ระบุประเภทข้อมูลที่มีอยู่ ความสัมพันธ์ระหว่างประเภท และการดำเนินการที่สามารถดำเนินการได้
Single Endpoint: ซึ่งแตกต่างจาก REST API ที่โดยทั่วไปมีจุดสิ้นสุดหลายจุดสำหรับทรัพยากรที่แตกต่างกัน GraphQL มีจุดสิ้นสุดจุดเดียว ลูกค้าสามารถส่งคำขอเดียวไปยังจุดสิ้นสุดนี้และรับเฉพาะข้อมูลที่พวกเขาร้องขอ ลดการเดินทางไปกลับของเครือข่ายให้น้อยที่สุด
Declarative Queries: ลูกค้าสามารถส่งแบบสอบถามไปยังเซิร์ฟเวอร์ GraphQL โดยระบุข้อมูลที่ต้องการในลักษณะที่เปิดเผย ซึ่งช่วยให้ไคลเอนต์สามารถร้องขอฟิลด์เฉพาะและความสัมพันธ์ที่ซ้อนกัน หลีกเลี่ยงการดึงข้อมูลมากเกินไป
Resolvers: ตัวแก้ไขคือฟังก์ชันที่ดึงข้อมูลที่ร้องขอจากระบบแบ็กเอนด์ของเซิร์ฟเวอร์ แต่ละฟิลด์ในแบบสอบถาม GraphQL มีตัวแก้ไขที่เกี่ยวข้องซึ่งกำหนดวิธีการดึงข้อมูล
Efficient Data Fetching: GraphQL ช่วยให้ดึงข้อมูลได้อย่างมีประสิทธิภาพโดยอนุญาตให้ลูกค้าดึงข้อมูลที่เกี่ยวข้องในคำขอเดียว ลูกค้าสามารถสำรวจและระบุความสัมพันธ์ที่ซ้อนกันเพื่อดึงข้อมูลที่ต้องการได้อย่างแม่นยำ ช่วยลดความจำเป็นในการเดินทางไป-กลับหลายครั้ง
Strong Typing and Validation: GraphQL schema บังคับใช้การพิมพ์ที่แข็งแกร่ง เพื่อให้แน่ใจว่าไคลเอนต์และเซิร์ฟเวอร์สื่อสารกันโดยใช้โครงสร้างข้อมูลที่กำหนดไว้อย่างดี GraphQL ยังดำเนินการตรวจสอบความถูกต้องของข้อความค้นหา ให้การตรวจจับข้อผิดพลาดล่วงหน้าและปรับปรุงประสบการณ์ของนักพัฒนา
Real-time Subscriptions: GraphQL รองรับข้อมูลแบบเรียลไทม์พร้อมการสมัครสมาชิก ลูกค้าสามารถสมัครรับเหตุการณ์ข้อมูลเฉพาะและรับการอัปเดตจากเซิร์ฟเวอร์เมื่อใดก็ตามที่ข้อมูลที่สมัครมีการเปลี่ยนแปลง สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับการสร้างแอปพลิเคชันแบบเรียลไทม์ เช่น แอปพลิเคชันแชทหรือแดชบอร์ดสด
GraphQL ได้รับความนิยมจากความสามารถในการจัดการกับความท้าทายของการดึงข้อมูลน้อยเกินไปและมากเกินไปใน REST API แบบดั้งเดิม ช่วยให้ลูกค้าควบคุมข้อมูลที่ได้รับได้ดีขึ้น ปรับปรุงประสิทธิภาพโดยลดการถ่ายโอนข้อมูลที่ไม่จำเป็น และให้วิธีที่มีประสิทธิภาพมากขึ้นในการพัฒนา API เมื่อเวลาผ่านไป ได้รับการนำไปใช้โดยบริษัทและเฟรมเวิร์กต่างๆ และมีการใช้งาน GraphQL สำหรับภาษาการเขียนโปรแกรมหลายภาษา