หน้าหลัก / บล็อก / รายละเอียด

อะไรคือความแตกต่างระหว่าง REST และ GRAPHQL APIs?

เฮ้ ในฐานะซัพพลายเออร์ API ฉันเป็นเข่า - ลึกลงไปในโลกของ APIs มาระยะหนึ่งแล้ว หนึ่งในคำถามที่พบบ่อยที่สุดที่ฉันได้รับจากลูกค้าคือเกี่ยวกับความแตกต่างระหว่าง REST และ GRAPHQL APIs ดังนั้นเรามาดำน้ำในและทำลายสถาปัตยกรรม API ยอดนิยมทั้งสองนี้

ส่วนที่เหลือคืออะไร?

การพักผ่อนหรือการถ่ายโอนสถานะเป็นตัวแทนมีมานานแล้ว มันเป็นชุดของหลักการทางสถาปัตยกรรมที่ใช้กันอย่างแพร่หลายในการสร้างบริการเว็บ แนวคิดพื้นฐานที่อยู่เบื้องหลังการพักผ่อนคือทุกอย่างเป็นทรัพยากร ทรัพยากรเหล่านี้สามารถเข้าถึงได้ด้วยวิธี HTTP มาตรฐานเช่น Get, Post, Put และ Delete

เมื่อคุณใช้ REST API คุณมักจะขอ URL เฉพาะ ตัวอย่างเช่นหากคุณกำลังสร้างแอพ E - Commerce คุณอาจมี URL ชอบ/สินค้าเพื่อรับรายการผลิตภัณฑ์ทั้งหมด หากคุณต้องการรับรายละเอียดเกี่ยวกับผลิตภัณฑ์เฉพาะคุณจะใช้ URL ชอบ/ผลิตภัณฑ์/123, ที่ไหน123เป็นรหัสผลิตภัณฑ์

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

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

ป้อน graphql

ในทางกลับกัน GraphQL เป็นเด็กที่ค่อนข้างใหม่ในบล็อก มันได้รับการพัฒนาโดย Facebook และเปิดตัวแหล่งที่มาในปี 2558 GraphQL เป็นภาษาคิวรีสำหรับ APIs และให้พลังแก่ลูกค้าในการระบุข้อมูลที่ต้องการ

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

แบบสอบถาม {user (id: "123") {ชื่อโพสต์ profilePicture (ครั้งแรก: 5) {เนื้อหาชื่อเรื่อง}}}

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

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

Avatrombopag Maleate- Thrombocytopenia, CAS No.: 677007-74-8,Tablet: 20mg Per TabletPegFilgrastim Injection– A Long Lasting RhG-CSF, CAS No.: 208265-92-3,Bulk And Injection (PFS): 6mg in 0.6ml

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

ข้อควรพิจารณาด้านประสิทธิภาพ

เมื่อพูดถึงประสิทธิภาพทั้ง REST และ GraphQL มีลักษณะของตัวเอง REST APIs สามารถเร็วมากโดยเฉพาะอย่างยิ่งเมื่อข้อมูลสามารถแคชได้สูง เนื่องจากมีการเข้าถึงทรัพยากรที่แตกต่างกันผ่าน URL ที่แตกต่างกันแคชจึงสามารถใช้งานได้อย่างมีประสิทธิภาพมากขึ้น

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

ประสบการณ์นักพัฒนา

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

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

เมื่อใดควรเลือกพักผ่อน

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

เมื่อใดควรเลือก graphql

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

ข้อเสนอของเรา

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

หากคุณสนใจบริการ API ของเราเรายังมีผลิตภัณฑ์ที่ยอดเยี่ยมในพอร์ตโฟลิโอของเรา ตรวจสอบAvatrombopag Maleate - Thrombocytopenia, CAS No.: 677007 - 74 - 8, แท็บเล็ต: 20 มก. ต่อแท็บเล็ต-Palonosetron Hydrochloride Injection - Anti - Emesis หลังจากเคมีบำบัดหรือการรักษาด้วยรังสี, หมายเลข CAS: 135729 - 62 - 3, การฉีด Palonosetron Hydrochloride 0.25mg/5ml, 0.075mg/1.5ml, และการฉีด Pegfilgrastim - RHG ที่ยาวนาน - CSF, CAS No.: 208265 - 92 - 3, จำนวนมากและการฉีด (PFS): 6 มก. ใน 0.6ml-

มาคุยกัน

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

การอ้างอิง

  • Fielding, RT (2000) รูปแบบสถาปัตยกรรมและการออกแบบสถาปัตยกรรมซอฟต์แวร์ที่ใช้เครือข่าย
  • เอกสารอย่างเป็นทางการของ GraphQL
  • แหล่งข้อมูลออนไลน์และบล็อกนักพัฒนาที่หลากหลายเกี่ยวกับ REST และ GraphQL

ส่งคำถาม