GraphQL กับ Drupal 8 : คู่มือทั้งหมดที่คุณต้องการ (พร้อมตัวอย่าง!)
เผยแพร่แล้ว: 2019-12-17GraphQL พูดคุยกับ Drupal ใน HTTP และผลลัพธ์มีโครงสร้างมากกว่าที่เคย!
วันนี้ ประสบการณ์ลูกค้าที่ยอดเยี่ยมเริ่มต้นด้วยเนื้อหาที่ยอดเยี่ยม เนื้อหาที่ให้บริการได้ทุกที่ ด้วยความคิดริเริ่ม API แรกของ Drupal 8 เนื้อหาที่จัดการโดย Drupal สามารถใช้งานได้โดยระบบอื่นบน HTTP REST (Representational State Transfer) ให้มาตรฐานการออกแบบสำหรับ API อย่างไรก็ตาม เนื่องจากแอปพลิเคชันไคลเอนต์มีความซับซ้อนและท้าทายมากขึ้น นักพัฒนาจึงต้องการโซลูชันที่ทันสมัยและมีประสิทธิภาพมากขึ้น

GraphQL ถือกำเนิดขึ้นจากความต้องการการโต้ตอบระหว่างไคลเอนต์กับเซิร์ฟเวอร์ที่ยืดหยุ่นและมีประสิทธิภาพมากขึ้น เป็นภาษาคิวรีที่ซับซ้อนและเครื่องดำเนินการ ในปี 2012 Facebook ได้สร้างข้อกำหนดสำหรับมัน ซึ่งอธิบายความสามารถและข้อกำหนดของแบบจำลองข้อมูลสำหรับแอปพลิเคชันที่ไม่มีส่วนหัว
GraphQL คืออะไร?
GraphQL เป็นมาตรฐานที่ปรับเปลี่ยนได้สำหรับ API และจัดเตรียมรันไทม์เพื่อเติมเต็มการสืบค้นเหล่านั้น GraphQL ให้รายละเอียดที่สมบูรณ์และสมเหตุสมผลของข้อมูลใน API ของคุณ ได้รับการพัฒนาด้วยอุดมการณ์ว่า "ขอสิ่งที่คุณต้องการและได้สิ่งนั้น" ช่วยให้ลูกค้าดึงข้อมูลสำหรับการตอบสนองที่ต้องการจาก API ได้อย่างแม่นยำ ไม่มีอะไรมากไปกว่านี้ - ไม่น้อยไปกว่านั้น
ข้อดีของ GraphQL
ข้อดีบางประการของการใช้ GraphQL สำหรับ Drupal -
- การพัฒนาส่วนหน้าเร็วขึ้น
เน้นการใช้งานอย่างรวดเร็วโดยไม่ต้องรอแบ็กเอนด์ปลายทางใหม่ ปรับปรุงการดึงข้อมูลและการบำรุงรักษาโค้ดโดยรับข้อมูลในรูปทรงที่คุณต้องการ - ขอสิ่งที่คุณต้องการและได้รับสิ่งนั้น
ให้การตอบสนองที่ตรงตามความต้องการของลูกค้า ส่งกลับผลลัพธ์ที่คาดเดาได้เสมอ แอปพลิเคชันที่ใช้ GraphQL ก็มีเสถียรภาพเช่นกัน เนื่องจากแอปพลิเคชันควบคุมข้อมูลที่ได้รับ ไม่ใช่เซิร์ฟเวอร์ - ใช้ข้อมูลที่มีอยู่ของคุณ
GraphQL สามารถใช้กับโครงสร้างพื้นฐานที่มีอยู่ เช่น REST, SOAP หรือฐานข้อมูลที่มีอยู่ หรืออย่างอื่น ช่วยให้คุณสามารถสืบค้นข้อมูลทั้งหมดในคำขอเดียวและให้การตอบสนองที่คาดการณ์ได้อย่างชัดเจน - จำนวนไบต์และไปกลับน้อยลง
การใช้ GraphQL สามารถดึงข้อมูลที่จำเป็นทั้งหมดโดยใช้แบบสอบถามเดียว มันทำให้
แอปพลิเคชันเร็วขึ้น

GraphQL พร้อม Drupal 8
REST เทียบกับ JSON:API เทียบกับ GraphQL
หากเราเปรียบเทียบสามสิ่งนี้ตามประสิทธิภาพของคำขอ JSON:API และ GraphQL นั้นยอดเยี่ยม เพราะในคำขอเดียว JSON:API และ GraphQl สามารถให้บริการคำตอบที่จำเป็นทั้งหมดได้ ในกรณีของ JSON:API บางครั้งเราต้องปรับแต่งการตอบสนอง แต่เมื่อพูดถึง GraphQL จะให้บริการเฉพาะสิ่งที่เราต้องการเท่านั้น REST จะช้ากว่าเมื่อเปรียบเทียบกับรายการเหล่านี้ เนื่องจากจำเป็นต้องมีคำขอหลายรายการเพื่อตอบสนองความต้องการทั่วไป
ในแง่ของความเรียบง่ายในการปฏิบัติงานและการนำไปใช้งาน REST นั้นง่ายที่สุด มันมีมาระยะหนึ่งแล้ว JSON:API ยังทำงานนอกกรอบด้วย CDN และ reverse proxy สำหรับโครงสร้างพื้นฐานพิเศษของ GraphQL จำเป็นต้องมีและไลบรารีของไคลเอ็นต์จำเป็นต้องนำไปใช้
ใช้เว็บแคชใน REST และ JSON:API ได้ง่ายกว่าเมื่อเทียบกับ GraphQL ใน GraphQL มีจุดปลายเพียงจุดเดียว (โดยส่วนใหญ่แล้วคือจุดปลาย HTTP POST) ที่ส่งการสืบค้นข้อมูลทั้งหมด เนื่องจากแบบสอบถามแต่ละรายการอาจแตกต่างกัน จึงยากต่อการใช้การแคชประเภทนี้
ข้อมูลจำเพาะ Drupal GraphQL รองรับการดำเนินการเป็นกลุ่ม/แบทช์โดยอัตโนมัติสำหรับการกลายพันธุ์ที่คุณได้ใช้งานแล้ว ในขณะที่ข้อกำหนด JSON:API ไม่รองรับ ความสามารถในการดำเนินการเขียนแบบแบตช์มีความสำคัญ
การติดตั้ง GraphQL สำหรับ Drupal 8
โมดูล Drupal GraphQL รองรับข้อกำหนดของ GraphQL ทั้งหมด และสามารถใช้เพื่อสร้างและเปิดเผยสคีมา GraphQL โมดูล Drupal 8 รุ่นอัลฟ่าล่าสุดในเวอร์ชัน 8.x-4 นำเสนอความสามารถสำหรับโมดูล Drupal เพื่อขยายสคีมาด้วยปลั๊กอิน
นี่คือที่ที่คุณสามารถติดตั้งโมดูล Drupal GraphQL จาก - https://www.drupal.org/project/graphql
คุณสามารถติดตั้งโดยใช้คำสั่งผู้แต่ง
นักแต่งเพลงต้องการ 'drupal/graphql:^3.0'
มันจะให้สองโมดูลแก่คุณ GraphQL Core และ GraphQL คุณต้องเปิดใช้งานทั้งสองโมดูล คุณสามารถเปิดใช้งานได้โดยใช้ drush เช่น
drush en graphql drush en graphql_core
แบบสอบถามด้วย Drupal GraphQL
โมดูล Drupal GraphQL มีเครื่องมือที่เรียกว่า GraphiQL เป็นเครื่องมือที่ทรงพลังและมี UI แบบโต้ตอบพร้อมฟังก์ชันต่างๆ เช่น การเติมข้อความอัตโนมัติ โดยใช้เครื่องมือนี้ คุณสามารถเรียกใช้แบบสอบถามและรับผลลัพธ์ได้ ไปที่ – “ /graphql/explorer ” สำหรับอินเทอร์เฟซ
คุณจะได้รับ UI ที่มีลักษณะดังนี้ –

GraphiQL UI
ที่แผงด้านซ้ายของ UI นี้ คุณสามารถเขียนแบบสอบถาม และทางด้านขวา คุณจะเห็นผลลัพธ์เป็นผลลัพธ์ในรูปแบบ JSON การคลิกที่ เอกสาร ที่มุมบนขวา คุณจะได้รับเอกสารของคำถามที่มี ส่วน ตัวแปรแบบสอบถามที่ แผงด้านซ้ายล่างสามารถใช้เพื่อส่งผ่านตัวแปรแบบสอบถาม

ตัวอย่าง
1.การสืบค้นโหนด

Drupal GraphQL - การค้นหาโหนด
2. การสืบค้นอนุกรมวิธาน

Drupal GraphQL - การค้นหาอนุกรมวิธาน
3. สอบถามเส้นทาง

Drupal GraphQL - เส้นทางการสืบค้น
4. เคียวรี Fragments

Drupal GraphQL - ส่วนของข้อความค้นหา
5.ตัวกรอง

Drupal GraphQL - ตัวกรอง
6. ฟิลเตอร์พร้อมตัวเชื่อม

Drupal GraphQL - ตัวกรองที่มีคำสันธาน
ตัวดำเนินการอื่น ๆ ที่มีอยู่คือ:
- เท่ากัน
- ไม่เท่ากับ
- มีขนาดเล็กกว่า
- เล็ก_THAN_OR_EQUAL
- มากกว่า
- GREATER_THAN_OR_EQUAL
- ใน
- NOT_IN
- ชอบ
- ไม่ชอบ
- ระหว่าง
- NOT_BETWEEN
- IS_NULL
- IS_NOT_NULL
คำสันธานมีได้ 2 ค่า
- และ
- หรือ
คุณยังใช้ Groups เพื่อเขียนคำค้นหาที่ซับซ้อนยิ่งขึ้นได้อีกด้วย
7.ตัวแปร GraphQL

Drupal GraphQL - ตัวแปร
การกลายพันธุ์
ใน GraphQL การกลายพันธุ์คือคำศัพท์ที่ใช้เมื่อใดก็ตามที่คุณต้องการเพิ่ม แก้ไข หรือลบข้อมูลที่จัดเก็บไว้ในเซิร์ฟเวอร์ ในกรณีนี้ Drupal ขออภัย โมดูลนี้ไม่มีวิธีการทำการกลายพันธุ์ทั่วไปแบบสำเร็จรูป เนื่องจากข้อกำหนดทางเทคนิคบางประการของ GraphQL
โค้ดตัวอย่างสำหรับการสร้าง การลบ การอัปเดต และการอัปโหลดไฟล์ สามารถพบได้ที่นี่: https://github.com/drupal-graphql/graphql-examples
ตัวอย่างการกลายพันธุ์:

Drupal GraphQL - ตัวอย่างการกลายพันธุ์
Drupal GraphQL พร้อม Twig
การใช้ Drupal GraphQL กับ Twig สามารถปรับปรุงประสิทธิภาพของเว็บไซต์ของคุณได้อย่างมาก นี่คือวิธี – เมื่อคุณใส่ข้อมูลลงในเทมเพลต Twig คุณสามารถดึงข้อมูลที่จำเป็นทั้งหมดได้โดยใช้การเรียก API เพียงครั้งเดียว ยิ่งไปกว่านั้น เนื่องจากไคลเอนต์ควบคุมข้อมูลที่ได้รับไม่ใช่เซิร์ฟเวอร์ จึงทำให้กระบวนการนี้เร็วยิ่งขึ้น
ในการใช้ Drupal GraphQL กับ Twig เราจำเป็นต้องมีโมดูล GraphQL Twig ในการดาวน์โหลดและเปิดใช้งาน ให้ใช้คำสั่งต่อไปนี้:
นักแต่งเพลงต้องการ 'drupal/graphql_twig:^1.0' drush en graphql_twig
จากนั้นคุณสามารถใช้แบบสอบถาม GraphQL ในเว็บไซต์ของคุณเช่น
{#graphql
แบบสอบถาม {
ผู้ดูแลระบบ:userById(id: "1") {
uid
ชื่อ
}
ผู้ใช้:currentUserContext {
uid
}
}
#}คุณจะได้รับข้อมูลการตอบสนองในตัวแปร GraphQL
