【问题标题】:GraphQL: How do I define input parameters/constraintsGraphQL:如何定义输入参数/约束
【发布时间】:2019-08-29 10:02:48
【问题描述】:

我正在寻找一种在架构中包含额外信息的方法,以便 API 使用者知道预期的内容。沿着字符串或其他东西的最大长度考虑。我希望这会出现在架构中,因为它基本上取代了 API 文档,对吧?

我发现了这个:https://github.com/confuser/graphql-constraint-directive 这似乎与我想要的相似,但是我不需要实现/执行,因为 django 已经这样做了。我只是想在输入字段上传达这些限制。

我对这一切都很陌生,所以我可能缺少 graphql 的概念吗?或者如何在架构中添加此类信息?

编辑:也许这不仅是为了记录,也是为了告诉前端如何呈现字段和/或能够进行一些前端验证。基本上就像一个 OPTIONS 请求什么的。

【问题讨论】:

  • 您是否发现任何文档对转移这些约束有用?我正在尝试使用 Formik 和 Graphql 代码生成器。但我在电子邮件字段上看不到比“字符串”更多的东西。似乎有很多信息丢失了。你运气好吗?
  • @PortEdison 不幸的是,我运气不佳,放弃了这个问题。

标签: python django input graphql graphene-python


【解决方案1】:

如果您只想记录有关特定字段或类型的内容,您可以在任一字段或类型上设置description。官方文档中似乎没有添加描述,但是有this issue关于它。

class MyType(graphene.ObjectType):
    class Meta:
        description = "Some description for MyType"

    my_field = graphene.String(description="Some description for myField")

【讨论】:

  • 啊,是的,这是一个非常好的文档选择!也知道是否有更严格的东西?就像告诉前端如何呈现表单的 OPTIONS 请求一样?
  • 不,至少不是任何特定于 GraphQL 的东西。一种选择可能是实现一个或多个custom scalars,这将是现有标量的轻包装。客户端通过自省可以看到给定字段的类型,因此他们可能会根据标量名称推断验证行为。例如,您可以有一个 UUID 标量,并且可以理解这应该是一个格式正确的 UUIDv4。
  • 实际上有一个 UUID 类型,顺便说一句——不需要定义一个自定义 github.com/graphql-python/graphene/blob/master/graphene/types/…
猜你喜欢
  • 2022-06-21
  • 1970-01-01
  • 1970-01-01
  • 2018-08-19
  • 2013-12-25
  • 2021-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多