gpt4 book ai didi

express - 为什么 Apollo Server 不是 Express 的中间件,而是接受 Express 作为中间件的服务器?

转载 作者:行者123 更新时间:2023-12-04 15:50:29 32 4
gpt4 key购买 nike

我只是想知道这种看似尴尬的配置的原因是什么(来自 Getting Started w/ 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

为什么我要打电话 .applyMiddleware()并喂它我的 app而不是使用 app.use() ,甚至从文档看来,Apollo 只回答 /graphql 上的请求。遵循 Express API 不是更好吗?
let apollo = require('apollo-server').ApolloMiddleware
app.use( '/graphql', apollo({ typeDefs, resolvers }) );

似乎 Apollo 正在颠倒 Express 的正常中间件流程?用 Apollo 的方式做这件事有什么好处?

最佳答案

我不和那些人一起工作,但根据那里的代码,我认为这与它向应用程序添加正文解析器、上传功能、websockets(如果你选择这个)有关,以及用于引擎健康检查的 .well-known 配置。根据该规范,众所周知的必须是根。此外,如果您使用订阅和 websockets,它们会监听 httpServer.once('listening') ,因此他们必须有权访问您的应用程序。如果他们只是给你一个你可以安装的,你就不会 app.listen就可以了,因为你会 app.listen而是靠你自己。

仅从内部结构来看,这至少是我所期望的。

关于express - 为什么 Apollo Server 不是 Express 的中间件,而是接受 Express 作为中间件的服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51716013/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com