#graphql #ast #validation #gql #tool

graphql-tools

Rust中使用GraphQL的实用工具,基于graphql-parser文档

27个版本

0.2.5 2024年2月15日
0.2.3 2024年1月29日
0.2.2 2023年2月13日
0.2.1 2022年12月5日
0.0.9 2021年12月28日

#82HTTP服务器

Download history 861/week @ 2024-04-28 1039/week @ 2024-05-05 1019/week @ 2024-05-12 1003/week @ 2024-05-19 939/week @ 2024-05-26 1056/week @ 2024-06-02 910/week @ 2024-06-09 986/week @ 2024-06-16 932/week @ 2024-06-23 960/week @ 2024-06-30 595/week @ 2024-07-07 1581/week @ 2024-07-14 1235/week @ 2024-07-21 985/week @ 2024-07-28 985/week @ 2024-08-04 842/week @ 2024-08-11

4,114 每月下载量

MIT/Apache

495KB
13K SLoC

graphql-tools (Rust)

文档 | Crate | GitHub

注意:此crate仍在开发中(请参阅以下路线图)

graphql_tools crate实现了Rust库中围绕GraphQL的工具。大多数工具基于在graphql_parser crate中实现的traitstruct

此库的目标是创建一个具有类似/改进API的通用工具层,类似于/improved的graphql-js参考实现graphql-tools从JS/TS生态系统中

入门

Crates.io

graphql-tools作为项目依赖项添加到您的Cargo.toml文件中,如下所示

[dependencies]
graphql-tools = "..."

或者,如果您正在使用cargo-edit

cargo add graphql-tools

路线图和进度

  • 更好的文档
  • GraphQL模式的AST访问者(graphql_parser::schema::Document
  • GraphQL操作的AST访问者(graphql_parser::operation::Document
  • 带TypeInfo的AST访问者
  • AST工具(进行中)
  • 结构体 扩展
  • GraphQL 验证引擎
  • 验证规则
  • GraphQL 操作转换器

如果您有想法/缺少的功能,请随时提交问题/开始 GitHub 讨论!

验证规则

此比较基于 graphql-js 参考实现。

  • 可执行定义(实际上不需要)
  • 唯一操作名称
  • 独立的匿名操作
  • 单个字段订阅
  • 已知类型名称
  • 组合类型上的片段
  • 变量是输入类型
  • 叶字段选择
  • 正确类型上的字段
  • 唯一片段名称
  • 已知片段名称
  • 无未使用片段
  • 可能的片段展开
  • 无片段循环
  • 唯一变量名称
  • 无未定义变量
  • 无未使用变量
  • 已知指令
  • 每个位置的唯一指令
  • 已知参数名称
  • 唯一参数名称
  • 正确类型的值
  • 提供必需的参数
  • 允许位置中的变量
  • 重叠字段可合并
  • 唯一输入字段名称(由 https://github.com/graphql-rust/graphql-parser/issues/59 阻挡)

依赖关系

~2.2–3MB
~67K SLoC