加入我们,从10月8日至10日,在纽约市区学习关于 GraphQL Federation 和 API 平台工程的最新技巧、趋势和新闻。参加2024年纽约市的GraphQL Summit
文档
免费开始

Apollo Federation 变更日志

了解 Apollo Federation 各个版本间的变化


本文描述了在每个小版本发布中引入的显著变化和新增内容。其中大部分变化涉及以下方面的增添或修改特定的 Federation 指令.

要查看 Apollo Federation 及其相关库的全面变更日志,请参阅 GitHub.

  • 要使用在特定 Federation 版本中引入的功能,请确保你的 @link 指令针对该版本(或更高版本):

    extend schema
    @link(url: "https://specs.apollo.dev/federation/v2.3",
    import: ["@key", "@shareable", "@interfaceObject"])

    如上示例必须针对至少 Federation v2.3,因为@interfaceObject指令是在该版本中引入的。

    注意

    在您增加一个的联盟版本之前,请更新您的和构建管道。有关详细信息,请参阅中的[安全更新您的图](/graphos/graphs/updating/).
  • 如果您维护一个子图兼容的库,请查阅此文章以了解最近添加的。所有这些指令定义也列在子图规范中。

v2.8


首次发布

2024年5月

可用?

最小路由器版本

1.48.0


指令更改

主题描述
@context

引入。了解更多

directive @context(name: String!) on OBJECT | INTERFACE | UNION;
@fromContext

引入。了解更多

scalar ContextFieldValue;
directive @fromContext(field: ContextFieldValue) on ARGUMENT_DEFINITION;

v2.7


首次发布

2024年2月

GraphOS可用?

最小路由器版本

1.39.0


指令更改

主题描述
渐进式 @override

添加了渐进式@override了解更多。

directive @override(from: String!, label: String) on FIELD_DEFINITION

v2.6


首次发布

2023年11月

GraphOS可用?

最小路由器版本

1.35.0


指令更改

主题描述
@policy

引入。了解更多。

directive @policy(policies: [[federation__Policy!]!]!) on
| FIELD_DEFINITION
| OBJECT
| INTERFACE
| SCALAR
| ENUM

子图更改

主题描述

策略

  • 表示授权策略的自定义。由新的@policy指令使用。

v2.5


首次发布

2023年7月

GraphOS可用?

最小路由器版本

1.29.1


指令更改

主题描述
@authenticated

引入。了解更多。

directive @authenticated on
FIELD_DEFINITION
| OBJECT
| INTERFACE
| SCALAR
| ENUM
@requiresScopes

引入。了解更多。

directive @requiresScopes(scopes: [[federation__Scope!]!]!) on
FIELD_DEFINITION
| OBJECT
| INTERFACE
| SCALAR
| ENUM

子图更改

主题描述

作用域

  • 表示JWT作用域的自定义标量。由新的@requiresScopes指令使用。

v2.4


首次发布

2023年3月

GraphOS可用?

最小路由器版本

1.13.1


子图更改

主题描述

s

  • 现在支持在Subscription类型中定义subgraph规范
  • 使用联邦图时,需要兼容版本的订阅查看详情。

v2.3


首次发布

2023年2月

GraphOS可用?

最小路由器版本

1.10.2


指令更改

主题描述
@interfaceObject

引入。 了解更多。

directive @interfaceObject on OBJECT
@key

现在可以应用于接口定义,以支持实体接口

(前版本的若应用于接口定义会引发错误。)

v2.2


首次发布

2022年11月

GraphOS可用?

最小路由器版本

1.6.0


指令更改

主题描述
@shareable

在指令定义中添加了repeatable

directive @shareable repeatable on OBJECT | FIELD_DEFINITION

此外,组合若应用于的定义,现在会引发错误。

v2.1


首次发布

2022年8月

GraphOS可用?

最小路由器版本

1.0.0


指令更改

主题描述
@composeDirective

引入。 了解更多。

directive @composeDirective(name: String!) repeatable on SCHEMA
@requires

现在,fields参数可以包括本身需要参数的字段。

(功能添加于v2.1.2)

type Product @key(fields: "id") {
id: ID!
weight(units: String): Int! @external
shippingEstimate: Int! @requires(fields: "weight(units: \"KILOGRAMS\")")
}

v2.0


首次发布

2022年4月

GraphOS可用?

最小路由器版本

1.0.0


指令更改

通过将@link指令应用于schema类型来“opt in” Federation 2功能,如下所示:

extend schema
@link(url: "https://specs.apollo.dev/federation/v2.0",
import: ["@key", "@shareable"])

此定义的import列表必须包含子图模式使用的每个Federation特定指令。在上面的示例中,该模式使用@key@shareable

关于Federation 2中定义的这些指令的详细信息,请参阅Federation特定GraphQL指令

主题描述
@key

添加了可选的resolvable参数。

directive @key(
fields: FieldSet!,
resolvable: Boolean = true
) repeatable on OBJECT | INTERFACE
@shareable

引入。

directive @shareable on OBJECT | FIELD_DEFINITION
@inaccessible

引入。

directive @inaccessible on
| FIELD_DEFINITION
| OBJECT
| INTERFACE
| UNION
| ARGUMENT_DEFINITION
| SCALAR
| ENUM
| ENUM_VALUE
| INPUT_OBJECT
| INPUT_FIELD_DEFINITION
@override

引入。

directive @override(from: String!) on FIELD_DEFINITION

引入。

directive @link(
url: String,
as: String,
for: link__Purpose,
import: [link__Import]
) repeatable on SCHEMA
@extends@external@provides@requires@tag

无更改。

子图更改

主题描述

实体

  • 实体不再源于子图。相反,任意数量的子图可以定义相同的并为它贡献字段。
  • 多个子图可以贡献相同的 给一个实体,如果该字段在每个定义它的子图中都被标记为 @shareable
  • 不再需要在其他子图已经定义了该实体的任何情况下,仍然要 扩展(或 @extends) 实体。
  • 每个子图都可以将对一个实体的任何数量的 @key 指令应用于实体。
  • 子图不再需要将 @external 指令应用于它们的 @key 字段。

值类型

  • 为了定义多个子图中共享 字段 的值类型,那些共享字段必须在每个定义它们的子图中都被标记为 @shareable
  • 值类型的字段在不同的子图中可以不同(以某种方式)。有关详细信息,请参阅 不同的共享字段

QueryMutation

  • 如果一个字段在每个定义该字段的子图中都被标记为 @shareable,则可以由多个子图定义 QueryMutation 类型的同一字段。
  • 子图不再需要将 extend 关键字(或 @extends 指令)应用于 QueryMutation 类型。

v1.1

指令更改

主题描述
@tag

引入。

directive @tag(name: String!) repeatable on
| FIELD_DEFINITION
| INTERFACE
| OBJECT
| UNION

v1.0

指令更改

有关这些指令在 Federation 1 中的定义的详细信息,请参阅 Federation 1 子图规范

主题描述
@key

引入。

directive @key(fields: _FieldSet!) repeatable on OBJECT | INTERFACE
@external

引入。

directive @external on FIELD_DEFINITION
@requires

引入。

directive @requires(fields: _FieldSet!) on FIELD_DEFINITION
@provides

引入。

directive @provides(fields: _FieldSet!) on FIELD_DEFINITION
@extends

引入。

directive @extends on OBJECT | INTERFACE

子图更改

主题描述

实体

  • 每个 实体 仅来源于一个 子图,并且可以被其他子图扩展。
  • 一个实体的原始 子图必须至少应用一个 @key 指令到实体定义中。
  • 扩展 实体的子图在定义另一个子图的实体时必须使用 extend 关键字(或 @extends 指令)。
  • 扩展实体的子图必须将对任何它扩展的实体应用正好一个 @key 指令。该 fields 必须与实体原始子图中定义的 @key 相匹配。
  • 扩展子图必须将@external指令应用于它扩展的实体中所有的@key字段。
  • 如果一个实体的字段在多个子图中定义,则必须将其标注为@external,除了其中一个子图以外的所有子图。

值类型

  • 每个定义值类型的子图必须以相同的方式定义该值类型。

QueryMutation

  • 不能有多个子图定义相同类型(如)的Query或Mutation字段的相同字段。
  • 每个子图必须将extend关键字(或@extends指令)应用到Query和Mutation类型上。
上一页
快速入门
下一页
子图
评分文章评分在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.,即Apollo GraphQL。

隐私策略

公司