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

在 Apollo Kotlin 中的 GraphQL 文件类型


支持以下文件类型用于 定义:

  • .json 用于 introspection schemas
  • .graphqls 用于 SDL schemas
  • .graphql 用于 operations (查询、)

Schemas

A GraphQL schema 描述了一个 的数据类型以及这些类型之间的关系。 Apollo Kotlin 支持通过 introspection 获得的 JSON schemas,以及传统的 SDL schemas

introspection schemas (.json)

您可以通过特殊的 来获取 GraphQL 服务器 的架构。 introspection 查询 (假定服务器启用了 )。像任何其他 GraphQL 服务器响应一样,返回的架构作为 JSON 格式提供,类似于以下内容:

schema.json
{
"data": {
"__schema": {
"queryType": {
"name": "Query"
},
"mutationType": {
"name": "Mutation"
},
"types": [...]
}
}
}

一些 JSON 架构省略了顶级 data 字段。 Apollo Kotlin 支持这种省略。

Apollo Sandbox 这样的工具可以自动 introspect GraphQL 服务器并将其架构以 JSON(或 SDL)格式下载。 Apollo Kotlin 也可以使用 downloadApolloSchema Gradle 任务下载 introspection 架构:

./gradlew :app:downloadApolloSchema \
--endpoint "https://example.com/graphql" \
--schema schema.json

JSON introspection schemas are verbose and difficult to read or modify. For simplicity, you should consider JSON schemas read-only and convert them to SDL schemas if you need to make changes.

SDL schemas (.graphqls)

SDL () is the canonical language for defining as defined in the GraphQL spec. It's much cleaner and more expressive than JSON for understanding a schema's structure. It also supports , unlike the JSON representation (see this issue):

schema.graphqls
type schema {
query: Query
mutation: Mutation
}
type Query {
field: String @deprecated
...
}

您不能使用 introspection 从 GraphQL 终端直接下载 SDL 模式。但是,如果您在 --schema 选项中指定 .graphqls 扩展名,Apollo Kotlin 可以自动将 introspection 模式转换为 SDL:

./gradlew :app:downloadApolloSchema \
--endpoint "https://example.com/graphql" \
--schema schema.graphqls

Apollo Kotlin 也支持 .sdl 文件扩展名用于 SDL 模式,但使用 .sdl 的其他工具非常少。您应继续使用 .graphqls 扩展名。

操作(.graphql)

GraphQL 操作会针对图执行以检索或修改数据。

在 Apollo Kotlin 中,文件使用 .graphql (不带 's') 扩展名。这些文件仅包含 可执行定义 (查询、突变、订阅和/或片段):

MyQuery.graphql
query MyQuery {
field1
field2
...
}

Apollo Kotlin 将这些操作编译为类型安全的模型,您可以在运行时使用这些模型。

上一页
多模块
下一页
客户端感知
评分文章评分在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.,商号Apollo GraphQL。

隐私政策

公司