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

联邦模式检查

使用模式检查进行独立和安全的子图开发


提示

有关的介绍,请参阅模式检查

每次你对进行更改时,运行rover subgraph check可以确保你的所有仍然可以组合成一个有效的。这有助于团队独立地工作在你联邦图的部分,而不会对你的用户或其他团队产生负面影响。

当你对特定的运行rover subgraph check时,将采取你的模式更改并尝试从所有注册的子图模式中组合一个超级图模式。

  • 如果成功,结果将与你的最近注册的超级图模式进行比较,以确认没有已知的客户端会受到提议的更改的影响。
  • 如果组合失败,验证将结束,并将结果返回给用户。

🔍 注意

运行rover subgraph check永远不会更新你的当前已注册的超级图模式

处理检查失败

在验证过程中可能会发生两种类型的失败:失败的用法检查和失败的组合

  • 失败的用法检查是由于破坏性更改(如删除一个)导致的失败,该字段是一个正处于查询状态的 hoạt động客户端所请求的。
  • 失败的组合是由于无法组合),例如缺少一个必需的 @key 教师

在大多数情况下,您应该在成功运行 rover subgraph check 之后才运行 rover subgraph publish。但是,某些工作流程需要故意发布一个失败的子图模式组合(例如在子图之间迁移实体或字段)。

即使 rover subgraph check 成功,rover subgraph publish 也可能会因为同时更改另一个子图而遇到组合错误。当这种情况发生时,只要子图注册的方案是符合规范的,其注册的方案仍然会被更新。但是,超图方案不会被更新。这意味着您的 的配置也不会更新。

此行为的示例输出如下

$ rover subgraph publish docs-example-graph@current --name books --schema ./schema.graphql
Publishing SDL to docs-example-graph:current (subgraph: books) using credentials from the default profile.
The gateway for the 'docs-example-graph' graph was NOT updated with a new schema
WARN: The following composition errors occurred:
Field "Author.name" can only be defined once.
There can be only one type named "Author".
Field "Book.title" can only be defined once.
Field "Book.author" can only be defined once.
There can be only one type named "Book".

此功能的理由在于,Apollo 方案注册表应该始终反映您基础设施中正在运行的内容。即使这意味着您的基础设施中的组合失败的,注册表也应反映这一点。

然而,您仍希望您的路由器像最近部署之前一样正常运行。此外,此功能可用于执行相关变化,例如平稳地从子图迁移一个字段到一个或引入循环依赖关系。

上一页
上链
下一页
部署最佳实践
评分文章评分

版权所有2024Apollo Graph Inc.,即Apollo GraphQL。

隐私政策

公司