【问题标题】:Why isn't Apollo Server a middleware for Express, rather than being a server that accepts Express as a middleware?为什么 Apollo Server 不是 Express 的中间件,而是接受 Express 作为中间件的服务器?
【发布时间】:2019-01-13 21:47:54
【问题描述】:

我只是想知道这个看似尴尬的配置的原因是什么(来自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 方式做这件事有什么好处?

【问题讨论】:

    标签: express graphql middleware apollo


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-05-13
      • 2019-06-08
      • 2018-01-02
      • 2011-07-14
      • 1970-01-01
      • 2018-02-18
      • 1970-01-01
      • 1970-01-01
      • 2020-05-28
      相关资源
      最近更新 更多