Rover 图命令
发布和检索你的 API 架构
这些Rover 命令主要用于与 单卷 不使用 联邦 。但是,您也可以使用它们从 GraphOS 获取联邦 图 的 API 架构 或 通过检查。
ⓘ 注意
- 要查找联邦 graph's 超级图架构而不是其 API 架构,请使用
supergraph
命令 。 了解不同的架构类型。 - 当直接与联邦 子图交互时,改用
子图
命令。
获取架构
graph fetch
此命令需要 使用 GraphOS 验证 Rover。
您可以使用 Rover 检索任何 GraphOS 图的当前架构及其访问权限下的 变种。
运行 graph fetch
命令,例如:
rover graph fetch my-graph@my-variant
上面示例中的 参数 my-graph@my-variant
指定了您从其检索架构的 Studio 图的 ID,以及您要检索的 变种。
如果您省略了 @
和变种名称,Rover 将使用超级图的默认变种,名称为 current
。
graph introspect
如果您需要获取运行中的 GraphQL server 或联邦网关的架构,您可以使用 Rover 在其上执行 introspection 查询。这对于您正在开发未通过 SDL 定义其架构的 GraphQL server,如 graphql-kotlin
。
使用 graph introspect
命令,例如:
rover graph introspect http://example.com/graphql
服务器必须可以通过 Rover 访问,并且必须启用 introspection。
监听模式变化
如果你将 --watch
参数传递给 rover graph introspect
,Rover 每秒督查一次你的 GraphQL 端点。每当返回的架构与之前返回的架构不同时,Rover 会输出更新后的架构。
包含头部信息
如果你要尝试访问的端点需要 HTTP 头部信息,你可以使用 --header
(-H
)标志来传递 key:value
对的头信息。如果你有多个头需要传递,请多次使用头信息。如果头信息包含任何空格,则必须将这对值用引号引起来。
rover graph introspect http://example.com/graphql --header "Authorization: Bearer token329r"
输出格式
默认情况下,graph fetch
和 graph introspect
将获取到的架构输出到 stdout
。这有助于将架构作为输入提供给其他 Rover 命令:
rover graph introspect https://127.0.0.1:4000 | rover graph publish my-graph@dev --schema -
你也可以将输出保存到本地 .graphql
文件,如下所示:
# Creates prod-schema.graphql or overwrites if it already existsrover graph fetch my-graph@my-variant --output prod-schema.graphql
有关通过 stdout
传递更多信息,请参阅 约定。
将架构发布到 GraphOS
graph publish
这个命令需要 使用 GraphOS 验证 Rover。
你可以使用 Rover 将架构更改发布到你的 GraphOS 单卷之一。
使用 graph publish
命令,如下所示:
rover graph publish my-graph@my-variant --schema ./schema.graphql
示例上面的 argument my-graph@my-variant
指定了你要发布的 GraphOS 图的 ID,以及你要发布到的 版本。
如果该 graph 已存在于 GraphOS 中,但该 variant 不存在,发布时将创建一个新的 variant。
提供架构
您可以使用 --schema
参数向 Rover 命令提供您的架构。值通常是本地 .graphql
或 .gql
文件路径,该文件格式为 SDL 格式。
如果您的模式不存储在兼容的文件中,您可以为--schema
标志提供-
作为值,以从stdin
接受SDL字符串。这使您能够将另一个 Rover命令(如graph introspect
)的输出管道传输,如下所示:
rover graph introspect https://127.0.0.1:4000 | rover graph publish my-graph@dev --schema -
尽可能直接发布.graphql
文件,而不使用 introspection。内省结果省略了模式注释和大多数指令的使用。
有关通过stdin
接受输入的更多信息,请参阅约定。
验证模式更改
graph check
这个命令需要 使用 GraphOS 验证 Rover。
在将模式更改发布到GraphOS之前,您可以通过检查这些更改来确认您不会向您的应用程序客户端引入破坏性更改。
要这样做,您可以运行graph check
命令:
# Using a schema filerover graph check my-graph@my-variant --schema ./schema.graphql# Using piped input to stdinrover graph introspect https://127.0.0.1:4000 | rover graph check my-graph --schema -
如图所示,参数和选项与graph publish
相似。
有关配置模式检查的行为(例如执行检查的过去时间范围),请参阅模式检查文档。
如果您不想等待检查完成,可以使用--background
标志运行命令。然后您可以在GraphOS Studio上的“检查”选项卡中查找检查的结果。
在CI中运行检查
如果您在CI中运行模式检查,可能需要将--background
标志传递给rover graph check
。此标志指示 Rover启动模式检查,但不需要等待其结果。如果您已将GraphOS连接到您的GitHub存储库,则集成会检测执行检查,并将状态添加到关联的提单请求中。
graph lint
这个命令需要 使用 GraphOS 验证 Rover。
您可以对本地模式运行GraphOS模式检查器,以识别任何违反格式化和命名最佳实践的违规:
rover graph lint --schema ./schema.graphql my-graph@my-variant
上面示例中的 argument my-graph@my-variant
是一个graph ref,它指定了您与之比较的模式更改的 graph的ID,以及您与之比较的变体。
模式验证也是 图验证
中的一项检查。使用此命令执行一次性的验证。
选项包括
名称 | 描述 |
---|---|
| 必需。本地的 或者,您也可以提供 |
| 如果提供,则检查器仅标记您本地模式和已发布的模式之间的差异中存在的违规行为。 默认情况下,此命令将标记您本地模式中所有的违规行为。 |
删除变种
graph delete
这个命令需要 使用 GraphOS 验证 Rover。
您可以通过运行 rover graph delete
删除 variant:
# ⚠️ This action is irreversible!rover graph delete my-graph@variant-to-delete
此命令将提示您确认,因为该操作是不可逆的。您可以通过传递 --confirm
标志来跳过确认。
如果您使用此命令删除了联接的 variant,它也将删除该 子图。要同时删除单个子图并保留变种,请参阅 删除子图。