GraphQL กับ Drupal 8 : คู่มือทั้งหมดที่คุณต้องการ (พร้อมตัวอย่าง!)

เผยแพร่แล้ว: 2019-12-17

GraphQL พูดคุยกับ Drupal ใน HTTP และผลลัพธ์มีโครงสร้างมากกว่าที่เคย!

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

GraphQL พร้อม drupal8



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

GraphQL คืออะไร?

GraphQL เป็นมาตรฐานที่ปรับเปลี่ยนได้สำหรับ API และจัดเตรียมรันไทม์เพื่อเติมเต็มการสืบค้นเหล่านั้น GraphQL ให้รายละเอียดที่สมบูรณ์และสมเหตุสมผลของข้อมูลใน API ของคุณ ได้รับการพัฒนาด้วยอุดมการณ์ว่า "ขอสิ่งที่คุณต้องการและได้สิ่งนั้น" ช่วยให้ลูกค้าดึงข้อมูลสำหรับการตอบสนองที่ต้องการจาก API ได้อย่างแม่นยำ ไม่มีอะไรมากไปกว่านี้ - ไม่น้อยไปกว่านั้น

ข้อดีของ GraphQL

ข้อดีบางประการของการใช้ GraphQL สำหรับ Drupal -

  1. การพัฒนาส่วนหน้าเร็วขึ้น

    เน้นการใช้งานอย่างรวดเร็วโดยไม่ต้องรอแบ็กเอนด์ปลายทางใหม่ ปรับปรุงการดึงข้อมูลและการบำรุงรักษาโค้ดโดยรับข้อมูลในรูปทรงที่คุณต้องการ
  2. ขอสิ่งที่คุณต้องการและได้รับสิ่งนั้น

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

    GraphQL สามารถใช้กับโครงสร้างพื้นฐานที่มีอยู่ เช่น REST, SOAP หรือฐานข้อมูลที่มีอยู่ หรืออย่างอื่น ช่วยให้คุณสามารถสืบค้นข้อมูลทั้งหมดในคำขอเดียวและให้การตอบสนองที่คาดการณ์ได้อย่างชัดเจน
  4. จำนวนไบต์และไปกลับน้อยลง

    การใช้ GraphQL สามารถดึงข้อมูลที่จำเป็นทั้งหมดโดยใช้แบบสอบถามเดียว มันทำให้
    แอปพลิเคชันเร็วขึ้น
drupal-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 ที่มีลักษณะดังนี้ –

กราฟQL-UI

GraphiQL UI

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

ตัวอย่าง

1.การสืบค้นโหนด

Quering-nodes-graphql

Drupal GraphQL - การค้นหาโหนด

2. การสืบค้นอนุกรมวิธาน

Drupal GraphQL - การค้นหาอนุกรมวิธาน

Drupal GraphQL - การค้นหาอนุกรมวิธาน


3. สอบถามเส้นทาง

Drupal GraphQL - เส้นทางการสืบค้น

Drupal GraphQL - เส้นทางการสืบค้น

4. เคียวรี Fragments

Drupal GraphQL - ส่วนของข้อความค้นหา

Drupal GraphQL - ส่วนของข้อความค้นหา

5.ตัวกรอง

Drupal GraphQL - ตัวกรอง

Drupal GraphQL - ตัวกรอง

6. ฟิลเตอร์พร้อมตัวเชื่อม

Drupal GraphQL - ตัวกรองที่มีคำสันธาน

Drupal GraphQL - ตัวกรองที่มีคำสันธาน

ตัวดำเนินการอื่น ๆ ที่มีอยู่คือ:

  • เท่ากัน
  • ไม่เท่ากับ
  • มีขนาดเล็กกว่า
  • เล็ก_THAN_OR_EQUAL
  • มากกว่า
  • GREATER_THAN_OR_EQUAL
  • ใน
  • NOT_IN
  • ชอบ
  • ไม่ชอบ
  • ระหว่าง
  • NOT_BETWEEN
  • IS_NULL
  • IS_NOT_NULL

คำสันธานมีได้ 2 ค่า

  • และ
  • หรือ

คุณยังใช้ Groups เพื่อเขียนคำค้นหาที่ซับซ้อนยิ่งขึ้นได้อีกด้วย

7.ตัวแปร GraphQL

Drupal GraphQL - ตัวแปร

Drupal GraphQL - ตัวแปร

การกลายพันธุ์

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

ตัวอย่างการกลายพันธุ์:

Drupal GraphQL - ตัวอย่างการกลายพันธุ์

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