Apollo Server是一个用于构建GraphQL服务器的库,而Apollo-server-express是Apollo Server的一个插件,它使得在Express应用程序中使用Apollo Server更加方便。以下是Apollo Server与Apollo-server-express的比较,包含代码示例:
const { ApolloServer, gql } = require('apollo-server');
const typeDefs = gql`
type Query {
hello: String
}
`;
const resolvers = {
Query: {
hello: () => 'Hello, World!'
}
};
const server = new ApolloServer({ typeDefs, resolvers });
server.listen().then(({ url }) => {
console.log(`Server running at ${url}`);
});
const express = require('express');
const { ApolloServer, gql } = require('apollo-server-express');
const typeDefs = gql`
type Query {
hello: String
}
`;
const resolvers = {
Query: {
hello: () => 'Hello, World!'
}
};
const server = new ApolloServer({ typeDefs, resolvers });
const app = express();
server.applyMiddleware({ app });
app.listen({ port: 4000 }, () =>
console.log(`Server running at http://localhost:4000${server.graphqlPath}`)
);
在上述代码示例中,Apollo Server和Apollo-server-express都使用相同的GraphQL类型定义(typeDefs)和解析器(resolvers)。但是Apollo-server-express还将GraphQL服务器集成到了一个Express应用程序中。
通过调用server.applyMiddleware({ app })
,Apollo Server可以将GraphQL路由添加到Express应用程序中的特定路径(默认为/graphql
)。这样,当向该路径发送GraphQL请求时,Express应用程序将使用Apollo Server处理这些请求。
总结:Apollo Server是一个独立的GraphQL服务器,而Apollo-server-express是将Apollo Server集成到Express应用程序中的插件。使用Apollo-server-express可以更方便地在Express应用程序中使用Apollo Server。