GraphQL 標誌GraphQL

GraphQL 自訂標量規格

2023/1/14 by Andreas Marek、Donna Zhou

宣布已貢獻的 GraphQL 自訂標量規格#

我們很高興宣布已貢獻的 GraphQL 自訂標量 規格的官方主頁在 scalars.graphql.org

歡迎您貢獻自訂標量規格(簡稱「規格」)。一旦您的規格合併,它將會寄存於 scalars.graphql.org/<GitHub-username>/<specification-name>。請參閱 貢獻指南,了解如何貢獻。

我們第一個已貢獻的規格是 DateTime。您可以在您的 GraphQL 架構中使用內建 @specifiedBy 指令,將使用者導向規格的網址。

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 Foundation 擁有的網域 scalars.graphql.org 上託管規格。這大幅減少了清楚記錄和分享自訂標量規格的負擔。

我們希望這能建立一個清楚記錄自訂標量的生態系統,並消除重複發明熱門標量的需求。最終,夠熱門的自訂標量在實務上將與內建標量沒有什麼不同,並提升 GraphQL 類型系統。

參與#

請參閱 貢獻指南,了解如何貢獻自訂標量規格。

如果您有任何意見或問題,請在 graphql-scalars GitHub 儲存庫 中開啟一個議題。