在阿波罗服务器中,可以通过回调函数来发送响应。下面是一个示例代码,演示了如何使用回调函数发送响应:
const apolloServer = require('apollo-server');
const { ApolloServer, gql } = apolloServer;
// 定义 GraphQL schema
const typeDefs = gql`
type Query {
hello: String
}
`;
// 定义 resolvers
const resolvers = {
Query: {
hello: (_, __, { res }) => {
// 使用回调函数发送响应
res.send('Hello, World!');
},
},
};
// 创建 Apollo 服务器
const server = new ApolloServer({
typeDefs,
resolvers,
context: ({ req, res }) => ({ req, res }),
});
// 启动服务器
server.listen().then(({ url }) => {
console.log(`Server running at ${url}`);
});
在上面的代码中,我们首先定义了一个GraphQL schema,其中只有一个Query类型,包含一个名为"hello"的字段。
接下来,我们定义了一个名为resolvers的对象,其中定义了一个名为"hello"的解析器函数。这个解析器函数接收三个参数:父级对象、参数和上下文对象。其中,我们使用了上下文对象中的res属性,这个属性是Express服务器的响应对象,通过调用其send方法,我们可以发送响应给客户端。
最后,我们创建了一个Apollo服务器,并将定义好的schema和resolvers传递给它。在服务器的context选项中,我们将req和res对象传递给了每个解析器函数,以便在解析器中使用它们。
最后,我们调用服务器的listen方法来启动服务器,并在控制台打印出服务器的URL。当客户端发起一个查询请求时,解析器函数会被调用,并使用回调函数发送响应给客户端。