如何在 GraphQL 中表达输入验证

Che*_*che 6 python python-3.x graphql graphql-python

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

input DateFormat {
  format: String!
}
Run Code Online (Sandbox Code Playgroud)
  • 我该如何表达format最多 10 个字符,例如其他验证。
  • 这可以使用GraphQL-core 3 for python 来实现吗?

提前致谢

Her*_*rku 5

我认为有两种可能:

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

  2. 只需在字段描述中记录验证即可。如果字符串仅由开发人员构建,则可能可以在解析器中抛出错误。如果验证涉及最终用户,我会鼓励使用突变响应有效负载,其中包含错误结果。另请参阅这篇文章