GraphQL LogoGraphQL

GraphQL 自定义标量规范

2023 年 1 月 14 日 由 Andreas Marek、Donna Zhou 撰写

宣布贡献的 GraphQL 自定义标量规范#

我们很高兴宣布贡献的 GraphQL 自定义标量规范的官方主页位于 scalars.graphql.org

欢迎您贡献自定义标量规范(简称“规范”)。一旦您的规范被合并,它将托管在 scalars.graphql.org/<GitHub-username>/<specification-name>。请参阅 贡献指南了解如何贡献。

我们的第一个贡献规范是针对 DateTime 的。您可以使用内置的 @specifiedBy 指令 在您的 GraphQL 架构中将用户指向规范的 URL。

scalar DateTime
@specifiedBy(url: "https://scalars.graphql.org/andimarek/date-time")

使用自定义标量提升 GraphQL 类型系统#

自定义标量从一开始就是 GraphQL 规范的一部分。它们具有使用自定义类型扩展 GraphQL 类型系统的独特能力。虽然自定义标量功能强大,但它们对于 API 的使用者来说更像是一个黑盒子。

最初,使用者很难理解自定义标量,因为 GraphQL 架构除了名称之外没有提供任何信息。例如,很难理解 DateTime 自定义标量的确切格式。也很难知道 API A 中的 DateTime 自定义标量是否与 API B 中的 DateTime 完全相同。

我们之前添加了内置的 @specifiedBy 指令,它为自定义标量的规范分配了一个 URL。这提供了一种记录自定义标量的标准方法。@specifiedBy 指令也是可内省的。

然而,我们后来发现这还不够。编写自定义标量规范和托管它们的负担留给了每个 API 自己解决。

通过自定义标量规范项目,我们提供了编写自定义标量规范的模板,并在 GraphQL 基金会拥有的域名 scalars.graphql.org 上托管这些规范。这极大地减少了清晰地记录和共享您的自定义标量规范的努力。

我们希望这能创建一个清晰记录的自定义标量生态系统,并消除重复发明流行标量的必要性。最终,一个足够流行的自定义标量将与内置标量几乎没有区别,并提升 GraphQL 类型系统。

参与进来!#

请查看 贡献指南,了解如何贡献自定义标量规范。

如果您有任何意见或问题,请在 graphql-scalars GitHub 仓库 上提交问题。