Rust 的 GraphQL 伺服器庫
GraphQL 是 Facebook 開發的資料查詢語言,旨在為行動和 Web 應用程式前端提供服務。
Juniper使得用 Rust 編寫類型安全且速度極快的 GraphQL 伺服器成為可能。我們也嘗試讓宣告和解析 GraphQL 模式像 Rust 所允許的那樣方便。
Juniper 不包含 Web 伺服器 - 相反,它提供建構塊來使與現有伺服器的整合變得簡單。它可以選擇為 Actix、Hyper、Rocket 和 Warp 框架提供預先建置的集成,包括嵌入式 Graphiql 和 GraphQL Playground,以便於調試。
本書也適用於 master 分支和 0.11.1 之後發布的舊版本。參見本書索引。
最好的起點是 Juniper Book,其中包含帶有大量範例的指南,涵蓋了 Juniper 的所有功能。 (非常多在製品)
要快速開始並了解瞻博網絡,請查看快速入門部分。
有關巨集、類型和 Juniper API 的具體信息,API 參考是最好的查找位置。
您還可以查看 Star Wars 架構以查看複雜的範例,其中包括具有特徵和介面的多態性。有關 Web 框架整合的範例,請參閱 actix、axum、hyper、rocket 和 warp 範例資料夾。
Juniper 根據規範(2021 年 10 月)支援完整的 GraphQL 查詢語言,包括介面、聯合、模式自省和驗證。它也可以以 GraphQL 模式語言輸出模式。
作為其他語言的其他 GraphQL 函式庫的例外,Juniper 預設會建立非空型別。 Vec<Episode>
型別的欄位將會轉換為[Episode!]!
。例如[Episode]
對應的 Rust 類型將是Option<Vec<Option<Episode>>>
。
Juniper 對序列化格式和網路傳輸不可知。
Juniper 支援分別使用execute()
和execute_sync()
進行非同步和同步執行。異步執行與運行時無關。
Juniper 採用以程式碼優先的方法定義 GraphQL 架構。如果您想使用模式優先方法,請考慮 juniper-from-schema 從模式檔案產生程式碼。
Juniper 與一些非常常見的 Rust 箱自動集成,使構建模式變得輕而易舉。這些板條箱中的類型將自動在您的模式中使用。
Juniper 尚未達到 1.0,因此應該預期 API 會出現一些不穩定。