首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >server.applyMiddleware({ app });在graphql中,与阿波罗服务器集成意味着什么?

server.applyMiddleware({ app });在graphql中,与阿波罗服务器集成意味着什么?
EN

Stack Overflow用户
提问于 2021-10-17 16:21:52
回答 1查看 401关注 0票数 0

这里,

http://https:%20www.apollographql.com/docs/apollo-server/integrations/middleware/#apollo-server-express

作为与阿波罗服务器集成的逻辑,他们使用了

代码语言:javascript
运行
复制
      import { ApolloServer } from 'apollo-server-express';
import { ApolloServerPluginDrainHttpServer } from 'apollo-server-core';
import express from 'express';
import http from 'http';

async function startApolloServer(typeDefs, resolvers) {
  const app = express();
  const httpServer = http.createServer(app);
  const server = new ApolloServer({
    typeDefs,
    resolvers,
    plugins: [ApolloServerPluginDrainHttpServer({ httpServer })],
  });
  await server.start();
  server.applyMiddleware({ app });
  await new Promise(resolve => httpServer.listen({ port: 4000 }, resolve));
  console.log(` Server ready at http://localhost:4000${server.graphqlPath}`);
}

server.applyMiddleware({ app });的意思是,我知道" app“是一个快速应用实例,但是为什么把它作为中间件传递给阿波罗服务器。它本身不是一个中间件!

我理解将特殊的真正中间件(称为rest)传递给像这个app.use(server.getMiddleware(rest))这样的服务器,我需要理解如何在应用中间件中传递应用程序。

EN

Stack Overflow用户

发布于 2021-10-18 04:37:12

医生说:

您可以调用server.getMiddleware而不是server.applyMiddleware,如果您想使用中间件功能来做一些事情,那么除了直接将它应用于应用程序之外。(server.applyMiddleware({ app, ...rest })app.use(server.getMiddleware(rest))的缩写。)

源代码 of applyMiddleware for apollo-server-express包:

代码语言:javascript
运行
复制
public applyMiddleware({ app, ...rest }: ServerRegistration) {
    // getMiddleware calls this too, but we want the right method name in the error
    this.assertStarted('applyMiddleware');

    app.use(this.getMiddleware(rest));
}
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69606324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档