我只是想知道这种看似尴尬的配置的原因是什么(来自Apollo 服务器入门 https://www.apollographql.com/docs/apollo-server/getting-started.html),
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
为什么我打电话.applyMiddleware()
并喂它我的app
而不是使用app.use() https://expressjs.com/en/guide/using-middleware.html,甚至从文档中看来,Apollo 仅响应以下请求/graphql
遵循 Express API 不是更好吗?
let apollo = require('apollo-server').ApolloMiddleware
app.use( '/graphql', apollo({ typeDefs, resolvers }) );
看起来 Apollo 正在颠倒 Express 的正常中间件流程?采用 Apollo 方式有什么优势?
我不与这些人合作,但根据那里的代码,我认为这与它向应用程序添加了正文解析器、上传功能、Websockets(如果您选择使用此功能)这一事实有关,以及用于引擎健康检查的众所周知的配置。根据该规范,众所周知的必须是根源。此外,如果您使用订阅和网络套接字,它们会监听httpServer.once('listening')
,因此他们必须有权访问您的应用程序。如果他们只是给你一个可以安装的,你就不会app.listen
关于它,因为你app.listen
而是靠你自己。
仅从内部来看,至少这是我所期望的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)