如何在 GraphQL 中表达输入验证

Posted

技术标签:

【中文标题】如何在 GraphQL 中表达输入验证【英文标题】:How to express input validations in GraphQL 【发布时间】:2020-10-21 22:19:51 【问题描述】:

我想知道如何在 GraphQL Schema 中表达输入类型验证,例如:

input DateFormat 
  format: String!

我如何表达 format 最多 10 个字符,例如其他验证。 这是否可以使用GraphQL-core 3 for python 来实现?

提前致谢

【问题讨论】:

【参考方案1】:

我认为有两种可能:

    创建自定义标量。标量可以在parseLiteral and parseValue 函数中进行输入验证。由于 GraphQL-core 3 似乎是 JS 库的一个端口,因此应该可以使用该库来实现。但是创建一个新的 Scalar 是一项相当多的工作,并不一定能提供更好的开发人员体验。标量必须以与必须记录的简单字段相同的方式记录。实际上,这意味着很少有新的标量类型用于特定格式。 Here 是 javascript 中的一些示例。

    只需在字段描述中记录验证。如果字符串仅由开发人员构建,则在解析器中抛出错误可能是可以的。如果验证涉及最终用户,我会鼓励突变响应有效负载,其中包含错误作为结果。另见this article

【讨论】:

看起来不错。我想知道语言规范中已经有一些东西了。例如,对于字符串,我想在模式中自动定义允许的最大长度 (String![max:10])。或者那样的东西。 不,没有这样的东西。可能最接近这一点的是指令。但我会小心过度使用指令。

以上是关于如何在 GraphQL 中表达输入验证的主要内容,如果未能解决你的问题,请参考以下文章

我将如何在 Scala 中表达链式赋值?

如何在 Django 中表达一对多关系?

如何在 Eclipse PDE 中表达项目间依赖关系

如何在 EF Core 和 LINQ 中表达 GetDate() 和 DateAdd() 方法?

如何在 Django 1.9 中表达 sqlite LEFT OUTER JOIN?

如何在我的 Graphql Schema 中表示 Neo4j 关系属性?