GraphQL vs REST: ทุกสิ่งที่คุณต้องการรู้

เผยแพร่แล้ว: 2022-09-20

การเลือกเทคโนโลยีที่จะรวมอยู่ในกลุ่มเทคโนโลยีของโครงการถัดไปอาจเป็นเรื่องยาก ในหลายกรณี — โดยเฉพาะอย่างยิ่งเมื่อต้องเลือกระหว่าง GraphQL และ RESTful API — ทั้งหมดนี้คือการเลือกสถาปัตยกรรมการออกแบบ API ที่ดีที่สุดตัวถัดไป

มีสี่วิธีที่สำคัญในการสร้าง API: SOAP, GRPC, REST และ GraphQL เรามักจะจำกัดความคิดของเราให้เหลือเพียง REST และ GraphQL เมื่อใดก็ตามที่เราต้องการสร้าง API เนื่องจาก REST ได้เปลี่ยนวิธีการดั้งเดิมในการสร้าง API ด้วย SOAP และ GRPC

GraphQL ได้รับการติดแท็กอย่างกว้างขวางว่าเป็น REST ที่ดีกว่า เนื่องจากเป็นวิธีที่ดีกว่าในการสร้าง API นักพัฒนาหลายคนเชื่อว่า GraphQL จะเข้ามาแทนที่ REST หลายคนค้นพบแล้วว่า GraphQL ช่วยแก้ปัญหาความท้าทายทั่วไปที่นักพัฒนาต้องเผชิญขณะสร้าง REST API

เรียนรู้วิธีเลือกสถาปัตยกรรมและรูปแบบการออกแบบ API ที่ดีที่สุดสำหรับโครงการของคุณในคู่มือนี้ คลิกเพื่อทวีต

สองวิธีในการสร้าง API นี้แตกต่างกันอย่างสิ้นเชิง ในทางปฏิบัติ เทคโนโลยีเหล่านี้ทำงานโดยส่งคำขอ HTTP และรับผลลัพธ์ ทั้งสองมีข้อดีและข้อเสีย และในบทความนี้ เราจะพูดถึงเทคโนโลยีที่ยอดเยี่ยมทั้งสองนี้อย่างครอบคลุม ซึ่งได้เปลี่ยนวิธีที่เราพัฒนาและปรับขนาด API

ก่อนที่เราจะลงลึกในรายละเอียด เรามาสำรวจความหมายของ GraphQL และ RESTful API กันก่อน

GraphQL คืออะไร?

GraphQL เป็นภาษาการสืบค้น API เช่นเดียวกับรันไทม์สำหรับการตอบคำถามเหล่านั้นด้วยข้อมูลที่มีอยู่ นอกจากนี้ยังมาพร้อมกับเครื่องมืออันทรงพลังสำหรับจัดการกับคำถามที่ซับซ้อนที่สุด

คุณสมบัติหลักของ GraphQL คือความสามารถในการขอและรับ เฉพาะ ข้อมูลที่ร้องขอเท่านั้น ไม่มีอะไรเพิ่มเติม ซึ่งทำให้ง่ายต่อการปรับขนาด API ของคุณไปพร้อมกับแอปของคุณ

ส่วนที่น่าตื่นเต้นที่สุดของ GraphQL คือความสามารถในการให้ข้อมูลทั้งหมดแก่คุณในปลายทางเดียว

สกรีนช็อตของผังงานสถาปัตยกรรม GraphQL API
สถาปัตยกรรม GraphQL API

ไดอะแกรมด้านบนคือการแสดงทั่วไปของสถาปัตยกรรม GraphQL ลูกค้าส่งคำขอจากอุปกรณ์ต่างๆ และ GraphQL จะจัดการคำขอและส่งคืนเฉพาะข้อมูลที่ร้องขอเท่านั้น วิธีนี้ช่วยแก้ปัญหาการดึงข้อมูลมากเกินไปและการดึงข้อมูลไม่เพียงพอใน RESTful API ได้อย่างเรียบร้อย

สกรีนช็อตของสนามเด็กเล่น GraphQL ที่แสดงการสืบค้นที่สำเร็จ
แบบสอบถามที่ประสบความสำเร็จในสนามเด็กเล่น GraphQL

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

GraphQL สร้างขึ้นโดย Facebook เพื่อจุดประสงค์หลักในการแก้ปัญหาประสบการณ์ของนักพัฒนาแอพมือถือในขณะที่ทำงานกับ REST API ตั้งแต่เวอร์ชันโอเพ่นซอร์สรุ่นแรกออกสู่ตลาดในปี 2015 GraphQL ก็มีการเติบโตอย่างมากจากการใช้เทคโนโลยีโดยผู้เล่นรายใหญ่ในธุรกิจเทคโนโลยี

บริษัทที่ใช้ GraphQL

ด้านล่างนี้คือรายชื่อบริษัทและแอปพลิเคชันบางส่วนที่ใช้ GraphQL อย่างแข็งขันบนเซิร์ฟเวอร์ของตน

Facebook

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

สกรีนช็อตของหน้าเข้าสู่ระบบ Facebook
Facebook ใช้ GraphQL

GitHub

GitHub ยังประกาศการใช้ GraphQL ด้วยการจัดหา GraphQL API สำหรับการสร้างการรวม การดึงข้อมูล และทำให้เวิร์กโฟลว์ของคุณทำงานโดยอัตโนมัติโดยใช้ GitHub GraphQL API GitHub GraphQL API นำเสนอการสืบค้นที่แม่นยำและยืดหยุ่นมากกว่า GitHub REST API

ภาพหน้าจอของหน้าแรกของ GitHub
GitHub ยังใช้ GraphQL

Pinterest

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

สกรีนช็อตของหน้าแรกของ Pinterest
Pinterest ใช้ GraphQL สำหรับไซต์ของพวกเขาเช่นกัน

บริษัทอื่นๆ ที่มีมูลค่าหลายพันล้านดอลลาร์ เช่น Intuit, Shopify, Coursera และ Airbnb ขับเคลื่อนแอปพลิเคชันด้วย GraphQL และการตั้งค่า REST ที่กว้างขวางนี้ยังคงเติบโตอย่างต่อเนื่อง

RESTful API คืออะไร?

REST ย่อมาจาก "Representational State Transfer" ซึ่งเป็นรูปแบบสถาปัตยกรรมซอฟต์แวร์สำหรับระบบไฮเปอร์มีเดียแบบกระจาย กำหนดหลักการและข้อจำกัดในการแลกเปลี่ยนทรัพยากรระหว่างเซิร์ฟเวอร์และไคลเอนต์

หากปฏิบัติตามหลักการเหล่านี้ใน API แอปพลิเคชันของ API นั้นจะเรียกว่า “RESTful” WordPress REST API เป็นตัวอย่างที่สำคัญของเรื่องนี้

ด้านล่างนี้คือหลักการและข้อจำกัดบางประการที่ API ต้องปฏิบัติตามจึงจะเรียกว่า Restful API:

  • Client-Server Decouple: ไคลเอ็นต์ (ส่วนหน้า) และเซิร์ฟเวอร์ (แบ็กเอนด์) แยกจากกันโดยสิ้นเชิงและสามารถสื่อสารผ่านจุดปลายได้เท่านั้น
  • อินเทอร์ เฟซแบบเดียวกัน: ข้อมูลที่เห็นในอินเทอร์เฟซจะเหมือนกันในทุกอุปกรณ์
  • การ ไร้สัญชาติ: เซิร์ฟเวอร์ไม่จดจำว่ามีการร้องขอปัจจุบันเป็นครั้งแรกหรือไม่ ทุกครั้งที่มีการร้องขอ จะต้องมีข้อมูลทั้งหมดที่จำเป็นในการดำเนินการตั้งแต่เริ่มต้น
  • ความสามารถในการแคช : อนุญาตให้จัดเก็บแคชและเซสชันได้ แต่ต้องกำหนดค่าไว้เพื่อให้ผู้ใช้ปลายทางเลือกไม่ใช้การแคชข้อมูลได้
  • สถาปัตยกรรมระบบแบบเลเยอร์: API ต้องได้รับการออกแบบมาเพื่อไม่ให้ทั้งไคลเอ็นต์และเซิร์ฟเวอร์สามารถบอกได้ว่าพวกเขากำลังสื่อสารโดยตรงหรือผ่านตัวกลาง

แผนภาพด้านล่างเป็นสถาปัตยกรรม REST พื้นฐาน มันแสดงให้เห็นว่าโดยทั่วไปแล้วคำขอและการตอบสนองจะได้รับการจัดการอย่างไร

สกรีนช็อตแสดงแผนผังสาขาของสถาปัตยกรรม RESTful API
สถาปัตยกรรม REST API

ประโยชน์ของ GraphQL

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

การดึงข้อมูลผ่านจุดปลาย API เดียว

ข้อได้เปรียบสูงสุดของ GraphQL คือความสามารถในการเข้าถึงจุดข้อมูลใดๆ หรือทั้งหมดผ่านจุดปลาย API เดียว

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

แผนภาพด้านล่างแสดงตัวอย่างที่ชัดเจนของการดึงทรัพยากรโดยใช้ RESTful API และ GraphQL คุณจะเห็นว่ามีจุดสิ้นสุดเพียงจุดเดียวในการเข้าถึงทรัพยากรในเซิร์ฟเวอร์ GraphQL ในขณะที่ปลายทาง API หลายจุดจำเป็นในการเข้าถึงทรัพยากรต่างๆ ใน ​​RESTful API

ผังงานแสดงการสืบค้นหลายรายการใน RESTful API และวิธีจัดการใน GraphQL
จุดปลาย API ใน REST และ GraphQL

ไม่มีการดึงข้อมูลมากเกินไปหรือน้อยเกินไป

ปัญหาการดึงข้อมูลมากหรือน้อยไปเป็นปัญหาที่ทราบแล้วของ RESTful API นี่คือเวลาที่ลูกค้าดาวน์โหลดข้อมูลโดยกดจุดปลายที่ส่งคืนโครงสร้างข้อมูลคงที่ มิฉะนั้นจะดึงข้อมูลมากหรือน้อยกว่าที่คาดไว้

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

การดึงข้อมูลน้อยไปนั้นค่อนข้างหายาก แต่เกิดขึ้นเมื่อปลายทางที่ระบุไม่สามารถให้ข้อมูลที่ร้องขอทั้งหมดได้ ลูกค้าจะต้องส่งคำขอเพิ่มเติมเพื่อเข้าถึงข้อมูลอื่นๆ ตามความจำเป็น

GraphQL แก้ปัญหาการดึงข้อมูลมากเกินไปหรือดึงข้อมูลน้อยเกินไปอย่างมีประสิทธิภาพโดยดึงทรัพยากรที่ลูกค้าร้องขอโดยไม่มีรายละเอียดเพิ่มเติม

การจัดการที่ดีขึ้นของระบบที่ซับซ้อนและไมโครเซอร์วิส

GraphQL สามารถรวมและซ่อนความซับซ้อนของระบบหลายระบบที่รวมเข้าด้วยกัน

ตัวอย่างเช่น สมมติว่าเราต้องการย้ายจากแอปพลิเคชันแบ็กเอนด์แบบเสาหินไปยังสถาปัตยกรรมไมโครเซอร์วิส GraphQL API ช่วยในการจัดการการสื่อสารระหว่างไมโครเซอร์วิสต่างๆ โดยการรวมเป็นหนึ่งสคีมา GraphQL

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

รวดเร็วและปลอดภัย

ปัญหาของการดึงข้อมูลมากเกินไปอาจส่งผลให้มีการใช้แบนด์วิดท์ที่สูงขึ้นสำหรับไคลเอ็นต์ ซึ่งอาจส่งผลให้แอปพลิเคชันของคุณล่าช้า การใช้รูปแบบการออกแบบ RESTful API นั้นใช้เวลานานกว่าในการคัดแยกข้อมูลที่จำเป็นจากเพย์โหลดจำนวนมหาศาล

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

ประโยชน์ของ REST

แม้ว่า GraphQL จะได้รับความนิยมเพิ่มขึ้น แต่ REST ก็ยังเป็นหนึ่งในมาตรฐาน API ที่ได้รับความนิยมมากที่สุด มาดูกันว่าทำไม

  • Learning Curve: RESTful API นั้นง่ายที่สุดในการเรียนรู้และทำความเข้าใจ นี่เป็นข้อได้เปรียบหลักเหนือ API อื่นๆ
  • การทำให้ เป็นอันดับ: REST มาพร้อมกับวิธีการและรูปแบบที่ยืดหยุ่นสำหรับการจัดลำดับข้อมูลใน JSON
  • การแคช: REST API สามารถจัดการการโหลดสูงด้วยความช่วยเหลือของพร็อกซีเซิร์ฟเวอร์ HTTP และแคช
  • คำขอที่ซับซ้อน: REST API มีปลายทางแยกต่างหากสำหรับคำขอที่แตกต่างกัน และช่วยให้คำขอที่ซับซ้อนสามารถจัดการได้ดีกว่าใน API อื่นๆ
  • สะอาดและเรียบง่าย: REST API สวยงาม เรียบง่าย และสะอาดตา พวกมันตรงไปตรงมาในการสำรวจ
  • ขั้นตอน HTTP มาตรฐาน: REST ใช้การเรียกโพรซีเดอร์ HTTP มาตรฐานเพื่อดึงข้อมูลและทำการร้องขอ
  • ไคลเอนต์/เซิร์ฟเวอร์: ซึ่งหมายความว่าตรรกะทางธุรกิจของมันถูกแยกออกจากการนำเสนอ ดังนั้นคุณจึงสามารถเปลี่ยนแปลงสิ่งหนึ่งได้โดยไม่กระทบกับอีกสิ่งหนึ่ง
  • REST Is Stateless: ข้อความทั้งหมดที่แลกเปลี่ยนระหว่างไคลเอนต์และเซิร์ฟเวอร์มีบริบททั้งหมดที่จำเป็นในการรู้ว่าจะทำอย่างไรกับข้อความ

ข้อเสียของ GraphQL

ตอนนี้เราได้พูดถึงข้อดีของ GraphQL กับ REST แล้ว เรามาสำรวจข้อเสียของ GraphQL กัน:

  • เส้นโค้งการเรียนรู้ที่ยาก: GraphQL ไม่ใช่เรื่องง่ายที่จะเรียนรู้เหมือน REST ส่วนที่ท้าทายที่สุดในการสร้าง GraphQL API คือการออกแบบสคีมา ต้องใช้เวลาและความรู้ด้านโดเมนเป็นจำนวนมาก
  • การอัปโหลดไฟล์: GraphQL ไม่มีคุณสมบัติการอัปโหลดไฟล์ดั้งเดิม ซึ่งสามารถแก้ไขได้โดยใช้การเข้ารหัส Base64 แต่ค่าใช้จ่ายในการเข้ารหัสและถอดรหัสด้วยวิธีนี้อาจใช้เวลานานและมีราคาแพง
  • การแคชเว็บ: การแคชช่วยลดการรับส่งข้อมูลบ่อยครั้งไปยังเซิร์ฟเวอร์ ซึ่งทำให้คำขอและกระบวนการตอบสนองเร็วขึ้น โดยเก็บข้อมูลที่เข้าถึงบ่อยไว้ใกล้กับเซิร์ฟเวอร์ GraphQL ไม่สนับสนุนหรือพึ่งพาวิธีการแคช HTTP ทั้งนี้ขึ้นอยู่กับกลไกการแคชของไคลเอ็นต์ Apollo หรือรีเลย์
  • ไม่เหมาะสำหรับแอปพลิเคชันขนาดเล็ก: GraphQL อาจไม่ใช่สถาปัตยกรรม API ที่ดีที่สุดสำหรับการสร้างแอปพลิเคชันขนาดเล็ก หากแอปของคุณไม่ต้องการการสืบค้นที่ยืดหยุ่นกว่าที่ GraphQL เสนอให้ REST คือคำตอบ
  • ปัญหาการสืบค้นที่ซับซ้อน: ความสามารถของ GraphQL ในการมอบสิ่งที่ลูกค้าต้องการอย่างแท้จริงยังสามารถนำไปสู่ปัญหาการเผยแพร่ข้อความค้นหา หากไคลเอนต์ส่งการสืบค้นข้อมูลที่ซ้อนกันมากเกินไป อาจนำไปสู่การส่งแบบสอบถามที่ไม่ถูกต้อง ซึ่งอาจใช้เวลานานมากสำหรับเซิร์ฟเวอร์ ควรใช้ REST กับปลายทางที่กำหนดเองเพื่อตอบสนองคำขอดังกล่าว

ข้อเสียของ REST

ตอนนี้ ให้เราหันความสนใจไปที่ข้อเสียบางประการของ REST:

ดิ้นรนกับการหยุดทำงานและปัญหา WordPress? Kinsta เป็นโซลูชันโฮสติ้งที่ออกแบบมาเพื่อช่วยคุณประหยัดเวลา! ตรวจสอบคุณสมบัติของเรา
  • การเดินทางไปกลับหลายครั้ง: ปัญหาที่ใหญ่ที่สุดของ REST API คือลักษณะของปลายทางจำนวนมาก ซึ่งหมายความว่าลูกค้าจะได้รับทรัพยากรทั้งหมดสำหรับแอปพลิเคชันที่สมบูรณ์ จำเป็นต้องเดินทางไปกลับนับไม่ถ้วนเพื่อรับข้อมูล
  • Over-fetching และ Under-fetching: ปัญหาของการดึงข้อมูลมากเกินไปและ under-fetching เป็นข้อเสียเปรียบที่สำคัญใน RESTful APIS อาจทำให้การตอบสนองล่าช้าเนื่องจากการดึงข้อมูลขนาดใหญ่ที่ไม่ต้องการ
  • ลำดับชั้น: เนื่องจาก REST API สร้างขึ้นจากทรัพยากรที่อ้างอิง URI จึงไม่เหมาะสมสำหรับทรัพยากรที่ไม่ได้จัดระเบียบหรือเข้าถึงในลำดับชั้นอย่างง่าย

ทำไมต้องใช้ GraphQL แทน REST

ต่อไป เราจะพูดถึงสาเหตุที่คุณอาจต้องการพิจารณา GraphQL สำหรับการพัฒนา API ในอนาคตของคุณแทน RESTful API

Schema ที่พิมพ์อย่างดี

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

ไม่มีการดึงข้อมูลมากเกินไปหรือน้อยเกินไป

ปัญหาของการดึงข้อมูลมากเกินไปหรือน้อยเกินไปเป็นปัญหาที่ทราบแล้วของ RESTful API ซึ่งไคลเอ็นต์จะได้รับข้อมูลกลับมามากหรือน้อยกว่าที่ร้องขอ GraphQL แก้ปัญหานี้ด้วยการจัดเตรียมสื่อสำหรับลูกค้าเพื่อระบุข้อมูลที่จำเป็น จากนั้นส่งคืนเฉพาะข้อมูลเฉพาะนั้น เท่านั้น

ปลายทางหลายจุด

ปัญหาที่ใหญ่ที่สุดอย่างหนึ่งของ RESTful API คือการมีปลายทางมากเกินไปในการเข้าถึงข้อมูล

สมมติว่าคุณต้องการเข้าถึงผู้ใช้รายใดรายหนึ่งผ่านหมายเลข ID ของพวกเขา คุณจะได้รับการนำเสนอด้วยปลายทางเช่น /users/1 แต่ถ้าคุณต้องการเข้าถึงรูปภาพของผู้ใช้รายนั้น คุณจะต้องส่งคำขอไปยังปลายทางอื่น เช่น /users/1/photos

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

GraphQL กับ REST Showdown

สุดท้ายนี้ เราจะมาสำรวจความแตกต่างที่สำคัญระหว่าง GraphQL และ RESTful API หลังจากนั้น เราจะพูดถึงคุณสมบัติบางอย่างของการออกแบบ API ที่ดีและเปรียบเทียบว่าเทคโนโลยีแต่ละอย่างจัดการกับมันอย่างไร

ประสิทธิภาพ

ไม่ต้องสงสัยเลยว่า GraphQL ทำงานได้เร็วกว่า RESTful API เนื่องจากความสามารถในการจัดหาจุดปลายเดียวในการเข้าถึงทรัพยากรทั้งหมดของคุณ RESTful API ใช้ปลายทางหลายจุด ซึ่งอาจส่งผลให้เกิดเวลาแฝงของเครือข่าย

ความซับซ้อนของแบบสอบถาม

เนื่องจากปลายทางไม่ได้แยกออกเป็นหลายจุดสิ้นสุด การสืบค้นของ GraphQL อาจซับซ้อนขึ้นเรื่อยๆ เมื่อเวลาผ่านไป ในทางกลับกัน RESTful API endpoints จะถูกแยกออก ซึ่งจำกัด RESTful APIs ไว้สำหรับการสืบค้นทั่วไป

ความนิยมและการสนับสนุนจากชุมชน

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

ในทางกลับกัน REST ได้รับการสนับสนุนจากชุมชนมากมายและยังคงถูกใช้โดยบริษัททุกประเภท ตั้งแต่การสร้างไมโครเซอร์วิสขนาดเล็กไปจนถึงผู้ที่สร้างแอปโซเชียลที่ซับซ้อนและอื่นๆ

ปัจจุบันการแข่งขันความนิยมระหว่าง GraphQL กับ REST เป็นแบบเสมอกัน เทคโนโลยีทั้งสองยังคงใช้กันอย่างแพร่หลายและได้รับการสนับสนุนอย่างดีจากชุมชนการพัฒนา

เส้นโค้งการเรียนรู้

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

ในทางกลับกัน REST นั้นง่ายต่อการเริ่มต้นและต้องการความรู้เกี่ยวกับโดเมนน้อยกว่าตั้งแต่แรก RESTful API ถูกรวมเข้ากับภาษาโปรแกรมหลักๆ ส่วนใหญ่และเฟรมเวิร์กยอดนิยม ซึ่งทำให้การเรียนรู้เป็นเรื่องง่าย

สกรีนช็อตแสดงการเปรียบเทียบ GraphQL กับ RESTful API
GraphQL เทียบกับ REST

สรุป

GraphQL เป็นเทคโนโลยีใหม่ที่ติดตามรูปแบบสถาปัตยกรรม RESTful API เช่นเดียวกับ REST ที่ได้รับการแนะนำเพื่อแก้ปัญหาด้วยรูปแบบ SOAP API

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

GraphQL หรือ RESTful API? เรียนรู้เพิ่มเติมในคู่มือนี้ คลิกเพื่อทวีต

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

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