gpt4 book ai didi

validation - 如何从 GraphQL 模式创建验证规则

转载 作者:行者123 更新时间:2023-12-04 10:17:26 26 4
gpt4 key购买 nike

如何将一个简单的 GraphQL 模式(我可以通过导入访问服务器端并通过查询访问客户端)转换为验证规则?
我可以看到如何为枚举做到这一点,假设我有一个标题:

  enum Title {
Mr, Ms, Mrs, Dr
}
我可以通过查询访问可能的值
  __type (name: "Title") {
name
enumValues {
name
}
}
现在我可以在客户端创建下拉列表或在服务器上创建验证,但是如何编码和访问例如字符串字段的最小/最大长度?还是数字的最小值/最大值?
我需要为每个字段添加自定义类型吗?或者,还有更好的方法?

[编辑]回应丹尼尔的回答:
我正在使用 yup 进行验证,这是一个很棒的库,但是例如,如果 gql InputType 上需要某个字段,我如何将其放入 yup 模式中?
我如何在前端使用那个 yup 模式?理想情况下,我想对其进行序列化,将其发送给客户端,并在那里重建验证。
我能想到的唯一另一种方法是共享代码,但是每次架构更改时我都需要重新构建和重新部署客户端,这当然是不可能的:/

最佳答案

有多种数据验证,例如:

  • 数据类型(这个值是字符串还是数字?)
  • 范围(此值是否在此值范围内?)
  • 约束(这个值是否满足这个正则表达式?)
  • 一致性(结束日期是否在开始日期之后?)
  • 引用(提供的标识符是否引用实际存在的实体?)

  • 像 GraphQL 这样的强类型语言只能真正提供数据类型验证。您的 GraphQL 服务可能会执行其他类型的验证(通过您的数据源、您的数据模型、自定义 GraphQL 标量等)——但是,只能从服务中内省(introspection)类型信息。内省(introspection)不是向客户传达其他验证逻辑的合适工具。

    如果您在后端使用 Node.js,并且您的目的是在后端和前端之间共享验证逻辑,那么最好的方法是使用像 yup 这样的库。或 joi .

    关于validation - 如何从 GraphQL 模式创建验证规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61011277/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com