GraphQL¶
GraphQL เป็นภาษาสำหรับการเข้าถึงข้อมูล (Query Language) เพื่อการใช้งาน API ของระบบและจะประมวลผลคำสั่งที่ฝั่ง Server หรือที่เรียกว่า Server-Side Runtime ถูกพัฒนาขึ้นโดย Facebook เพื่อมาช่วยให้ Front-end Developer สามารถเขียน Query ข้อมูลในรูปแบบที่มีความยืดหยุ่นได้มากกว่า ผู้ใช้สามารถกำหนดวิธีที่ต้องการจะดึงข้อมูลและรูปแบบข้อมูลที่ต้องการเองได้เลย โดยที่ Back-end Developer ไม่จำเป็นต้องพัฒนา API ใหม่เพิ่มกรณีที่โครงสร้างข้อมูลยังเหมือนเดิม ซึ่งจะช่วยแก้ปัญหาของ RESTful API ที่เวลาออกแบบ API ไปแล้ว Request และ Response จะต้องเป็นไปตามที่เขียนโปรแกรมไว้ เช่น อาจจะได้ข้อมูลเกินกว่าที่ต้องการ หรือ ได้ข้อมูลไม่ครบตามที่ต้องการ ต้องเรียก API หลายครั้ง เป็นต้น
GraphQL ของ NEXIIOT Platform จะเป็น Management API ซึ่งมี Graphcool Playground เป็น Backend as a Service ในการสร้าง GraphQL Backend ใช้สำหรับจัดการกับ Database Schema และ Data ผ่าน Web UI ได้ โดย UI จะมีลักษณะดังรูปต่อไปนี้
จากรูปด้านบนจะถูกแบ่งเป็น 4 ส่วน ส่วนที่ 1 ใช้สำหรับระบุ Function ที่ต้องการเรียกใช้ ส่วนที่ 2 ใช้สำหรับระบุตัวแปรที่จะส่งผ่าน HTTP Headers (ในที่นี้จะเป็นตัวแปร Authorization) และส่วนที่ 3 ใช้สำหรับระบุ แสดงผลลัพธ์ที่ตอบกลับมาจากฝั่ง Server โดยเริ่มจากกรอกข้อมูลในส่วนที่ 1 และ 2 (ถ้า Function ที่ใช้งานจำเป็นต้อง Authentication) จากนั้นให้คลิกที่ Play Icon (ส่วนที่ 4) เพื่อ Executed Function สำหรับโครงสร้าง Function
GraphQL เวอร์ชันปัจจุบันจะเป็น V.2 มีการพัฒนาเพิ่มเติมให้มีความสมบูรณ์มากยิ่งขึ้น การเข้าใช้งานสามารถเข้าใช้งานได้ที่ https://gqlv2.nexiiot.io โดย Function การใช้งานต่างๆ จะแยกเป็น 3 ประเภทใหญ่ ดังนี
- QUERIES
- BillingAccountProfile
- BillingAccountProjectInfo
- BillingAccountResourceUsageProfile
- BillingAccountSubscriptionProfile
- BillingLog
- BillingMetricUsageProfile
- Device
- DeviceList
- DeviceToken
- Feed
- FeedData
- Group
- GroupList
- Hook
- Membership
- MyBillingAccount
- Project
- ProjectBillingAccountInfo
- ProjectBillingAccountSubscriptionProfile
- ProjectBillingMetricUsageProfile
- ProjectList
- Schema
- Shadow
- Trigger
- UserByUserID
- MUTATIONS
- ClearFeed
- CreateAPIToken
- CreateDevice
- CreateDeviceToken
- CreateGroup
- CreateHook
- CreateMembership
- CreateProject
- CreateTrigger
- DeleteAllTriggers
- DeleteDevice
- DeleteFeedData
- DeleteGroup
- DeleteHook
- DeleteMembership
- DeleteProject
- DeleteTrigger
- DisableAllTriggers
- DisableDevice
- DisableTrigger
- EnableAllTriggers
- EnableDevice
- EnableTrigger
- GroupDevice
- LeaveProject
- MoveDeviceToProject
- PublishMessageToDevice
- PublishMessageToGroup
- ResyncDeviceStatus
- RevokeDeviceToken
- SaveTrigger
- UnGroupDevice
- UpdateDevice
- UpdateGroup
- UpdateHook
- UpdateMembership
- UpdateProject
- UpdateSchema
- UpdateTrigger
- UpdateUserProfile
- WriteShadow
- SUBSCRIPTIONS