使用Apollo Server时,如何生成schema.graphql文件?

使用Apollo Server时,如何生成schema.graphql文件?,graphql,apollo,apollo-server,Graphql,Apollo,Apollo Server,使用Apollo Server编写GraphQL服务器时,如何在服务器上运行命令以生成供客户端使用的schema.GraphQL文件?注意:我没有使用Apollo客户端,我使用的是中继 我知道我可以运行GraphQL游乐场并从那里下载它,但我想要一个可以自动执行的命令行 我正在搜索类似于rake graphql:schema:dump的东西,您可以使用它在服务器上运行以生成schema。graphql您可以使用Apollo CLI来实现这一点。首先安装它: npm install -g apol

使用Apollo Server编写GraphQL服务器时,如何在服务器上运行命令以生成供客户端使用的
schema.GraphQL
文件?注意:我没有使用Apollo客户端,我使用的是中继

我知道我可以运行GraphQL游乐场并从那里下载它,但我想要一个可以自动执行的命令行


我正在搜索类似于
rake graphql:schema:dump的东西,您可以使用它在服务器上运行以生成
schema。graphql

您可以使用Apollo CLI来实现这一点。首先安装它:

npm install -g apollo
然后运行此命令,如中所示:

该命令将根据用于输出文件的扩展名生成SDL中的内省结果或模式

您的
ApolloServer
实例不公开它创建的架构,但您也可以直接对该实例运行自省查询:

const { getIntrospectionQuery, buildClientSchema, printSchema } = require('graphql')
const { ApolloServer } = require('apollo-server')

const apollo = new ApolloServer({ ... })
const { data } = await apollo.executeOperation({ query: getIntrospectionQuery() })
const schema = buildClientSchema(data)
console.log(printSchema(schema))

如果您正在将现有的
GraphQLSchema
实例传递给Apollo Server,您也可以直接在其上调用
printSchema

\gradlew downloadschema--endpoint=https://您的端点/graphql--schema=app/src/main/graphql/com/example/您的路径/schema.json


祝你愉快

我没有用阿波罗客户端。。。如果服务器正在运行,这难道不是一个curl/wget吗?我不确定您使用的客户端是如何影响这一点的。您要求运行CLI命令以获取SDL中的服务器架构,这是一种方法。不能只使用curl,因为这只会返回内省结果。您需要一种方法将其转换为GraphQLSchema对象,然后打印它。还有其他方法,但您特别要求使用CLI命令。我在服务器上使用CLI命令,该命令将从定义的类型生成
schema.graphql
,而无需下载任何内容。我更新了我的问题来说明这一点。对不起,请参见编辑。如果您想从命令行运行它,您需要将其转换为npm脚本。
const { getIntrospectionQuery, buildClientSchema, printSchema } = require('graphql')
const { ApolloServer } = require('apollo-server')

const apollo = new ApolloServer({ ... })
const { data } = await apollo.executeOperation({ query: getIntrospectionQuery() })
const schema = buildClientSchema(data)
console.log(printSchema(schema))