从10月8日至10日加入我们,在纽约市了解关于GraphQL联盟和API平台工程的最新技巧、趋势和新闻。加入我们在纽约市的2024年GraphQL峰会
文档
免费开始

Rover 图命令

发布和检索你的 API 架构


这些 命令主要用于与 单卷 不使用 联邦 。但是,您也可以使用它们从 GraphOS 获取联邦 的 API 架构通过检查

注意

获取架构

graph fetch

您可以使用 Rover 检索任何 图的当前架构及其访问权限下的

运行 graph fetch 命令,例如:

rover graph fetch my-graph@my-variant

上面示例中的 my-graph@my-variant指定了您从其检索架构的 Studio 图的 ID,以及您要检索的 变种

如果您省略了 @ 和变种名称,Rover 将使用超级图的默认变种,名称为 current

graph introspect

如果您需要获取运行中的 或联邦网关的架构,您可以使用 Rover 在其上执行 。这对于您正在开发未通过 定义其架构的 GraphQL server,如 graphql-kotlin

使用 graph introspect 命令,例如:

rover graph introspect http://example.com/graphql

服务器必须可以通过 Rover 访问,并且必须启用 introspection

监听模式变化

如果你将 --watch 参数传递给 rover graph introspectRover 每秒督查一次你的 端点。每当返回的架构与之前返回的架构不同时,Rover 会输出更新后的架构。

包含头部信息

如果你要尝试访问的端点需要 HTTP 头部信息,你可以使用 --header-H)标志来传递 key:value 对的头信息。如果你有多个头需要传递,请多次使用头信息。如果头信息包含任何空格,则必须将这对值用引号引起来。

rover graph introspect http://example.com/graphql --header "Authorization: Bearer token329r"

输出格式

默认情况下,graph fetchgraph 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 exists
rover 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 file
rover graph check my-graph@my-variant --schema ./schema.graphql
# Using piped input to stdin
rover graph introspect https://127.0.0.1:4000 | rover graph check my-graph --schema -

如图所示,和选项与graph publish相似。

有关配置模式检查的行为(例如执行检查的过去时间范围),请参阅模式检查文档

如果您不想等待检查完成,可以使用--background标志运行命令。然后您可以在上的“检查”选项卡中查找检查的结果。

在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,以及您与之比较的变体

模式验证也是 图验证中的一项检查。使用此命令执行一次性的验证。

选项包括

名称描述
--schema

必需。本地的 .graphql.gql 文件的路径,以 SDL 格式

或者,您也可以提供 -,此时命令将使用 SDL 字符串通过 stdin 传递(见 使用 stdin)。

--ignore-existing-lint-violations

如果提供,则检查器仅标记您本地模式和已发布的模式之间的差异中存在的违规行为。

默认情况下,此命令将标记您本地模式中所有的违规行为。

删除变种

graph delete

这个命令需要 使用 GraphOS 验证 Rover

您可以通过运行 rover graph delete 删除 variant

# ⚠️ This action is irreversible!
rover graph delete my-graph@variant-to-delete

此命令将提示您确认,因为该操作是不可逆的。您可以通过传递 --confirm 标志来跳过确认。

如果您使用此命令删除了联接的 variant,它也将删除该 。要同时删除单个子图并保留变种,请参阅 删除子图

上一页
解释
下一页
版权
评分文章评分在GitHub编辑编辑论坛Discord

©2024Apollo Graph Inc.,工商名Apollo GraphQL。

隐私政策

公司