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 会出现一些不稳定。