ไลบรารีเซิร์ฟเวอร์ GraphQL สำหรับ Rust
GraphQL เป็นภาษาคิวรีข้อมูลที่พัฒนาโดย Facebook โดยมีวัตถุประสงค์เพื่อรองรับส่วนหน้าบนมือถือและเว็บแอปพลิเคชัน
Juniper ช่วยให้สามารถเขียนเซิร์ฟเวอร์ GraphQL ใน Rust ที่ปลอดภัยต่อการพิมพ์และรวดเร็วอย่างเห็นได้ชัด นอกจากนี้เรายังพยายามทำให้การประกาศและการแก้ไขสคีมา GraphQL สะดวกเท่าที่ Rust จะอนุญาต
Juniper ไม่รวมเว็บเซิร์ฟเวอร์ แต่จะมีองค์ประกอบสำเร็จรูปเพื่อให้บูรณาการกับเซิร์ฟเวอร์ที่มีอยู่ได้อย่างตรงไปตรงมา มีตัวเลือกการผสานรวมที่สร้างไว้ล่วงหน้าสำหรับเฟรมเวิร์ก Actix, Hyper, Rocket และ Warp รวมถึง Graphiql และ GraphQL Playground แบบฝังเพื่อการดีบักที่ง่ายดาย
หนังสือเล่มนี้ยังมีให้สำหรับสาขาหลักและเวอร์ชันเก่าที่เผยแพร่หลัง 0.11.1 ดูดัชนีหนังสือ
สถานที่ที่ดีที่สุดในการเริ่มต้นคือ Juniper Book ซึ่งมีคำแนะนำพร้อมตัวอย่างมากมาย ซึ่งครอบคลุมคุณลักษณะทั้งหมดของ Juniper (วิปมาก)
หากต้องการเริ่มต้นอย่างรวดเร็วและทำความรู้จักกับ Juniper โปรดดูส่วนการเริ่มต้นอย่างรวดเร็ว
สำหรับข้อมูลเฉพาะเกี่ยวกับมาโคร ประเภท และ Juniper API การอ้างอิง API คือที่ที่ดีที่สุดในการค้นหา
คุณยังสามารถตรวจสอบสคีมาของ Star Wars เพื่อดูตัวอย่างที่ซับซ้อน รวมถึงความหลากหลายที่มีลักษณะและอินเทอร์เฟซ สำหรับตัวอย่างการรวมเฟรมเวิร์กเว็บ โปรดดูโฟลเดอร์ตัวอย่าง actix, axum, hyper, rocket และ warp
Juniper รองรับภาษาคิวรี GraphQL เต็มรูปแบบตามข้อกำหนด (ตุลาคม 2021) รวมถึงอินเทอร์เฟซ สหภาพ การวิปัสสนาสคีมา และการตรวจสอบความถูกต้อง นอกจากนี้ยังสามารถส่งออกสคีมาในภาษาสคีมา GraphQL ได้อีกด้วย
เป็นข้อยกเว้นสำหรับไลบรารี GraphQL อื่นๆ สำหรับภาษาอื่น Juniper สร้างประเภทที่ไม่เป็นค่าว่างตามค่าเริ่มต้น ฟิลด์ประเภท Vec<Episode>
จะถูกแปลงเป็น [Episode!]!
- ประเภท Rust ที่สอดคล้องกันสำหรับเช่น [Episode]
จะเป็น Option<Vec<Option<Episode>>>
Juniper ไม่เชื่อเรื่องรูปแบบการทำให้เป็นอนุกรมและการขนส่งเครือข่าย
Juniper รองรับการดำเนินการทั้งแบบอะซิงโครนัสและซิงโครนัสโดยใช้ execute()
และ execute_sync()
ตามลำดับ การดำเนินการแบบอะซิงโครนัสนั้นไม่เชื่อเรื่องรันไทม์
Juniper ปฏิบัติตามแนวทางการใช้โค้ดเป็นอันดับแรกเพื่อกำหนดสคีมา GraphQL หากคุณต้องการใช้วิธีการเน้นสคีมาแทน ให้พิจารณาจูนิเปอร์จากสคีมาเพื่อสร้างโค้ดจากไฟล์สคีมา
Juniper มีการผสานรวมโดยอัตโนมัติกับกล่อง Rust ทั่วไปบางกล่องเพื่อทำให้แผนผังการสร้างเป็นเรื่องง่าย ประเภทจากลังเหล่านี้จะสามารถใช้งานได้ใน Schemas ของคุณโดยอัตโนมัติ
Juniper ยังไม่ถึง 1.0 ดังนั้นจึงควรคาดว่าจะมีความไม่เสถียรของ API บางอย่าง