ในช่วงไม่กี่ปีที่ผ่านมา คุณมักจะเห็นภาษาที่เรียกว่า GraphQL ดังนั้น GraphQL คืออะไร? สถานการณ์การใช้งานคืออะไร? บทช่วยสอนนี้จะแนะนำคุณเกี่ยวกับพื้นฐานของ GraphQL ดังนั้นหากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ GraphQL อย่าพลาด
GraphQL คืออะไร
GraphQL คือภาษาคิวรีและเครื่องมือรันไทม์ฝั่งเซิร์ฟเวอร์สำหรับ APIs มันมีข้อกำหนดที่สมบูรณ์สำหรับการคิวรี API ทำให้เซิร์ฟเวอร์สามารถส่งคืนเฉพาะข้อมูลที่จำเป็นโดยไม่มีความซ้ำซ้อน ซึ่งแตกต่างจาก RESTful APIs, คำขอ GraphQL ต้องการคำขอน้อยลงและให้ความแน่นอนแก่ผู้พัฒนายิ่งขึ้นเกี่ยวกับผลลัพธ์ที่ส่งคืน
สถานการณ์การใช้งาน GraphQL
นักพัฒนาต้องการทำงานให้เร็วขึ้นและมีประสิทธิภาพมากขึ้น และระบบชนิดของ GraphQL ช่วยให้พวกเขาระบุฟิลด์ข้อมูลที่แน่นอนที่พวกเขาต้องการจากเซิร์ฟเวอร์เพื่อให้ตรงกับรูปแบบข้อมูลของแอปของพวกเขา GraphQL ยังคงได้รับความนิยมเพิ่มขึ้นเรื่อยๆ รวมถึง:
- การออกแบบ APIs ด้วยโครงสร้างข้อมูลที่ซับซ้อน: การออกแบบ APIs ด้วยโครงสร้างข้อมูลแบบหลายชั้นที่ซับซ้อนอาจเป็นเรื่องท้าทายสำหรับ RESTful APIs อย่างไรก็ตาม GraphQL ทำให้ง่ายต่อการออกแบบ APIs ด้วยโครงสร้างข้อมูลที่ซับซ้อน เนื่องจากโครงสร้างข้อมูลที่ต้องการของไคลเอนต์สามารถกำหนดได้อย่างชัดเจน
- การพัฒนาแอปพลิเคชันมือถือและแอปพลิเคชันหน้าเดียว (SPAs): แอปพลิเคชันมือถือและ SPAs มักจะต้องดึงข้อมูลจากปลายทาง API หลายแห่ง อย่างไรก็ตาม ด้วย GraphQL คุณสามารถรับข้อมูลที่ต้องการได้จากปลายทาง API เดียว ลดปริมาณการรับส่งข้อมูลเครือข่ายและปรับปรุงประสิทธิภาพ
- การแยกส่วนหน้าบ้านและส่วนหลังบ้าน: GraphQL ช่วยให้การแยกส่วนหน้าบ้านและส่วนหลังบ้าน ทำให้ทั้งสองทีมสามารถพัฒนาได้อย่างอิสระ สิ่งนี้ช่วยเร่งกระบวนการพัฒนาและปรับปรุงประสิทธิภาพการทำงานของทีม
- คิวรีแบบกำหนดเองและการตรวจสอบสิทธิ์: GraphQL ช่วยให้คุณปรับแต่งข้อมูลที่ไคลเอนต์ต้องการ GraphQL ยังมีคุณสมบัติการตรวจสอบสิทธิ์และการอนุญาตที่ยืดหยุ่น ทำให้เหมาะสำหรับแอปพลิเคชันที่ต้องการความปลอดภัยสูง
โดยรวมแล้ว GraphQL มีประโยชน์ในสถานการณ์ต่างๆ เช่น การออกแบบ APIs ด้วยโครงสร้างข้อมูลที่ซับซ้อน การพัฒนาแอปพลิเคชันมือถือและ SPAs ที่มีประสิทธิภาพสูง และการแยกส่วนหน้าบ้านและส่วนหลังบ้าน
ประวัติของ GraphQL
GraphQL ถูกสร้างขึ้นโดย Facebook ในปี 2012 เป็นโครงการภายในเพื่อปรับปรุงการดึงและการจัดการข้อมูลสำหรับแอปพลิเคชันมือถือของพวกเขา
ในปี 2015 Facebook ได้เปิดตัว GraphQL สู่สาธารณชน ซึ่งนำไปสู่การนำไปใช้อย่างแพร่หลายในหมู่บริษัทเทคโนโลยีรายใหญ่ เช่น GitHub และ Twitter ความสามารถในการคิวรีข้อมูลแบบประกาศและยืดหยุ่นทำให้เป็นส่วนสำคัญของระบบนิเวศการพัฒนาสมัยใหม่ได้อย่างรวดเร็ว
ในปี 2018 ได้มีการก่อตั้ง GraphQL Foundation เพื่อสนับสนุนการพัฒนาแบบเปิดและการกำกับดูแลที่ขับเคลื่อนโดยชุมชน ซึ่งเป็นการเสริมสร้างตำแหน่งของ GraphQL ให้เป็นเครื่องมือที่มีประสิทธิภาพสำหรับการสร้าง APIs ที่มีประสิทธิภาพ วันนี้ GraphQL ยังคงเติบโตและปฏิวัติวิธีการที่นักพัฒนาออกแบบและโต้ตอบกับ APIs
ข้อกำหนด GraphQL: Schema, fields, Query และ Parameters
GraphQL schema กำหนดชนิด, คิวรี, การกลายพันธุ์ และฟิลด์การสมัครสมาชิกที่มีอยู่ใน GraphQL API นี่คือคำจำกัดความของคำศัพท์พื้นฐาน:
- Object types: ใช้เพื่อกำหนดฟิลด์ของอ็อบเจกต์ในรูปแบบข้อมูล ตัวอย่างเช่น อ็อบเจกต์ผู้ใช้มีฟิลด์ เช่น ชื่อและอีเมล
- Fields: กำหนดชนิดข้อมูลที่เซิร์ฟเวอร์ GraphQL สามารถดึงข้อมูลได้เมื่อดำเนินการคิวรี ฟิลด์มักจะเป็นของ object types แต่บางครั้งถูกกำหนดเป็น scalar types scalar types รวมถึง strings, integers, floats, boolean values, IDs, ฯลฯ
- Query: กำหนดจุดเริ่มต้นสำหรับการคิวรีใน GraphQL API คิวรีใช้เพื่อดึงข้อมูลจากเซิร์ฟเวอร์ GraphQL
- Mutation: กำหนดจุดเริ่มต้นสำหรับการกลายพันธุ์ใน GraphQL API การกลายพันธุ์ใช้เพื่อเปลี่ยนข้อมูลบนเซิร์ฟเวอร์ GraphQL
- Subscription: กำหนดจุดเริ่มต้นสำหรับการสมัครรับข้อมูล GraphQL API การสมัครรับข้อมูลใช้เพื่อรับการอัปเดตข้อมูลแบบเรียลไทม์จากเซิร์ฟเวอร์ GraphQL
Schemas
รูปแบบข้อมูลใช้เพื่อกำหนดโครงสร้างข้อมูลของเอนทิตีอ็อบเจกต์และความสัมพันธ์ระหว่างกัน ตัวอย่างเช่น มันระบุว่าอ็อบเจกต์มีแอตทริบิวต์ใดบ้าง ไดอะแกรมต่อไปนี้แสดงถึงรูปแบบข้อมูลที่สมบูรณ์ ซึ่งกำหนด Query สำหรับการคิวรีข้อมูลและอ็อบเจกต์ส่งคืนสองรายการ Header และ Query

Field
ในการคิวรี GraphQL เซิร์ฟเวอร์จะส่งคืนโครงสร้างข้อมูลที่ร้องขอไปยังไคลเอนต์พร้อมผลลัพธ์ที่แม่นยำสำหรับแต่ละฟิลด์ที่ร้องขอ ฟิลด์การตอบสนองจากเซิร์ฟเวอร์ตรงกับฟิลด์ที่ร้องขอจากไคลเอนต์ ดังแสดงในไดอะแกรมต่อไปนี้ ตามตัวอย่างที่กำหนดไว้ข้างต้น มีการร้องขอสองฟิลด์และส่งคืนผลลัพธ์สองฟิลด์ เครื่องมืออ้างอิงที่ใช้คือ APOLLO

Parameters
เมื่อคิวรีข้อมูล พารามิเตอร์สามารถส่งผ่านเพื่อระบุเกณฑ์การคิวรี ตัวอย่างเช่น ในไดอะแกรมต่อไปนี้ อ็อบเจกต์ person ถูกคิวรีด้วยพารามิเตอร์ id เพื่อดึงข้อมูลแอตทริบิวต์ที่เกี่ยวข้อง สามารถป้อน id จริงได้ในส่วนตัวแปรด้านล่างสำหรับการคิวรี เครื่องมืออ้างอิงที่ใช้คือ APOLLO

Run Cases
ตัวอย่างที่ 1: แสดงผลลัพธ์ข้อมูลที่สมบูรณ์ตามรูปแบบข้อมูล

ตัวอย่างที่ 2. แสดงผลเฉพาะคุณสมบัติที่เลือก

ข้อดีและข้อเสียของ GraphQL
หลังจากทำความเข้าใจแนวคิดพื้นฐานและการใช้งานบางอย่างของ GraphQL แล้ว มาวิเคราะห์ข้อดีและข้อเสียของการใช้ GraphQL กันสั้นๆ
ข้อดีของ GraphQL
- GraphQL สามารถคิวรีข้อมูลทั้งหมดโดยใช้แหล่งข้อมูลเพียงแหล่งเดียว คำขอทั้งหมดสามารถเข้าถึงปลายทางเซิร์ฟเวอร์เดียว
- การตอบสนองจาก GraphQL ตรงกับฟิลด์ที่ร้องขอของไคลเอนต์อย่างแม่นยำ ลดการรบกวนระหว่างไคลเอนต์และเซิร์ฟเวอร์
- GraphQL รองรับการกำหนดและการส่งข้อมูลทุกชนิด รวมถึงการส่งพารามิเตอร์ในการร้องขอ
- GraphQL มีแพลตฟอร์มเครื่องมือโอเพนซอร์ส ปลั๊กอิน และส่วนขยายมากมายในขณะนี้
ข้อเสียของ GraphQL
- นักพัฒนาที่คุ้นเคยกับคำขอ RESTful อาจต้องใช้เวลาในการเรียนรู้ GraphQL
- เมื่อเทียบกับการพัฒนาอินเทอร์เฟซ RESTful นักพัฒนาเซิร์ฟเวอร์อาจต้องใช้เวลามากขึ้นในการพัฒนารูปแบบข้อมูลที่ดูแลรักษาง่าย
GraphQL มีคุณสมบัติที่น่าสนใจและการใช้งานเชิงลึกอีกมากมาย ที่นี่เราขอแนะนำให้ลองใช้เครื่องมืออ้างอิง APOLLO GraphQL เหมาะสำหรับการสำรวจ
นอกจากนี้ Apidog ยังผสานรวมกับคุณสมบัติการดีบักของ GraphQL และเรายินดีต้อนรับให้ลองใช้ Apidog
