要实现此目的,可以使用ApolloServer类的实例来配置Apollo服务器,将其与Express框架集成,并将其用作中间件。这将允许Apollo服务器同时将HTML和GraphQL查询处理程序绑定到同一端点上。
下面是一个示例代码:
const express = require('express');
const { ApolloServer, gql } = require('apollo-server-express');
//定义GraphQL模型
const typeDefs = gql`
type Query {
hello: String
}
`;
//定义GraphQL解析器
const resolvers = {
Query: {
hello: () => 'Hello world!'
}
};
const app = express();
//创建Apollo服务器实例,并将其与Express集成
const server = new ApolloServer({ typeDefs, resolvers });
server.applyMiddleware({ app });
//定义根路由处理程序,响应HTML请求
app.get('/', (req, res) => {
res.send('Hello world!
');
});
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Server listening on port ${PORT}`);
});
在此示例中,我们创建了一个GraphQL模型和一个解析器,并将其传递给Apollo服务器实例。然后,我们将该实例用作Express应用程序的中间件,并将其与根路由处理程序一起使用,以便它可以同时处理HTML和GraphQL查询请求。
需要注意的是,使用此方法时,应将HTML和GraphQL查询的解析模板分别考虑。