加入我们,从10月8日至10日在纽约市,了解关于GraphQL联邦和API平台工程的最新的提示、趋势和新闻。参加2024年纽约市的GraphQL峰会
文档
免费开始
您正在查看该软件早期版本的文档。 切换到最新的稳定版本。

在Apollo Kotlin中使用GraphQL变量


支持将值传递给您的,您可以使用变量以重用具有多个值的单一(这是推荐的最佳实践)。

GraphQL 中,是必需的,而是可选的。然而,由于在实际操作中很少省略变量, 提供了一种机制,在生成的代码中使变量成为非可选的。这使得生成的代码结构更加直接。

由于您可能仍然需要省略 变量,默认情况下将它们生成为可选的,但您可以根据特定变量或全局配置来设置这一点。

考虑以下包含两个空变量的 GraphQL 请求:

query GetTodos($first: Int, $offset: Int) {
todos(first: $first, offset: $offset) {
id
text
}
}

Apollo Kotlin为这个查询生成了以下Kotlin代码:

class GetTodosQuery(
val first: Optional<Int?> = Optional.Absent,
val offset: Optional<Int?> = Optional.Absent
)

您可以选择性地提供或省略变量值,如下所示:

// Omit values for both variables
val query = GetTodosQuery(Optional.Absent, Optional.Absent)
// Provide null for both variables
val query = GetTodosQuery(Optional.Present(null), Optional.Present(null))
// Send explicit values for both variables
val query = GetTodosQuery(Optional.Present(100), Optional.Present(0))

将可空变量变为必须的

要全局禁用可选变量,请按如下方式更新您的Gradle配置:

apollo {
service("service") {
// ...
generateOptionalOperationVariables.set(false)
}
}

如果您这样做,在以下GetTodos 查询示例中,Apollo Kotlin现在生成以下代码:

class GetTodosQuery(val first: Int?, val offset: Int?)

这使得调用代码更简洁

// Provide null for both variables
val query = GetTodosQuery(null, null)
// Send explicit values for both variables
val query = GetTodosQuery(100, 0)

如果您为这些null任何这些变量传递的值为