Eva*_*oll 6 middleware express apollo graphql
我只是想知道这个看似笨拙的配置是什么原因(来自Apollo Server的入门),
const server = new ApolloServer({
// These will be defined for both new or existing servers
typeDefs,
resolvers,
});
server.applyMiddleware({ app }); // app is from an existing express app
Run Code Online (Sandbox Code Playgroud)
为什么我正在打电话.applyMiddleware()给我app而不是使用app.use()它,甚至似乎从文档来看,Apollo只是回答请求/graphql而不是更好地遵循Express API,
let apollo = require('apollo-server').ApolloMiddleware
app.use( '/graphql', apollo({ typeDefs, resolvers }) );
Run Code Online (Sandbox Code Playgroud)
似乎Apollo正在颠覆Express的正常中间件流程?采用阿波罗方式的优势是什么?
我不与这些人合作,但根据那里的代码,我认为这与它向应用程序添加了正文解析器、上传功能、Websockets(如果您选择使用此功能)这一事实有关,以及用于引擎健康检查的众所周知的配置。根据该规范,众所周知的必须是根源。此外,如果您使用订阅和 websocket,它们会监听httpServer.once('listening'),因此它们必须有权访问您的应用程序。如果他们只是给你一个可以安装的,你就不会app.listen安装它,因为你只能app.listen自己安装。
仅从内部来看,至少这是我所期望的。
| 归档时间: |
|
| 查看次数: |
318 次 |
| 最近记录: |