ทำความรู้จักกับ GraphQL

Athiwat
Athiwat
Feb 23, 2017 · 1 min read

GraphQL คือ ภาษาสำหรับการเข้าถึงข้อมูล (Query Language) เพื่อการใช้งาน API ของระบบและจะประมวลผลคำสั่งที่ฝั่ง server หรือที่เรียกว่า server-side runtime โดยใช้โครงสร้างข้อมูลที่เรากำหนดไว้

GraphQL is a query language for your API, and a server-side runtime for executing queries by using a type system you define for your data.

แต่ GraphQL ไม่ได้พัฒนาขึ้นมาเพื่อแทนที่ภาษาสำหรับการเข้าถึงข้อมูลเช่น SQL หรือทำหน้าที่เป็นระบบจัดเก็บฐานข้อมูล (storage engine) แต่อย่างใด

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

GET /users

หรือหากต้องการดึงเพื่อนทั้งหมดของผู้ใช้งาน ID 25

GET /users/25/friends 

แต่หากผมต้องการดึงเบอร์โทรศัพท์ของเพื่อนที่เป็นเพื่อนกับผู้ใช้งาน ID 25 ล่ะจะต้องดึงและเขียนโปรแกรมอย่างไร? โดยผมมีการจัดเก็บข้อมูลดังนี้

จากตัวอย่างนี้จะเห็นได้ว่าเราจำเป็นต้องมี API 2 end point ด้วยกัน คือ GET /users/:id/friends เพื่อดึงข้อมูลเพื่อนของผู้ใช้ ID 25 จากนั้นก็วนลูปดึงข้อมูลผู้ใช้โดยใช้ GET /users/:id เพื่อดึงข้อมูลเบอร์โทรศัพท์อีกที และวิธีนี้ผมก็จะได้ข้อมูลอื่นๆที่ไม่จำเป็นของผู้ใช้มาอีกด้วย ไม่ว่าจะเป็นชื่อ รูปภาพ และอีเมล์

อีกวิธีหนึ่งผมก็พัฒนา API end point ขึ้นมาใหม่ชื่อว่า GET /users/:id/friends_mobile เพื่อใช้งานสำหรับกรณีนี้โดยเฉพาะ

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

ด้วยเหตุนี้ GraphQL จึงได้เข้ามาเพื่อแก้ปัญหาในจุดนี้โดยเฉพาะ เพื่อให้เราสามารถดึงข้อมูลได้ตรงกับความต้องการ ลดความซับซ้อนในการเขียนโค้ดเพื่อดึงข้อมูล สามารถจัดการและดูแลรักษาโค้ดในฝั่ง server-side ได้ง่ายมากยิ่งขึ้น และที่สำคัญ GraphQL ไม่ได้ผูกติดกับ database และ ที่จัดเก็บข้อมูลใดๆทั้งนั้น


Athiwat

Written by

Athiwat

Founder of Humaan.ai—Build intelligent technology tools that amplifying human ingenuity.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade