【问题标题】:what does server.applyMiddleware({ app }); in graphql integration with apollo-server meansserver.applyMiddleware({ app }); 是什么?在 graphql 与 apollo-server 的集成中意味着
【发布时间】:2021-12-04 22:24:20
【问题描述】:

这里,

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

作为将 express 与他们使用的 apollo-server 集成的逻辑

      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”是一个快速应用程序实例,但为什么将它作为中间件传递给 apollo-server.. 它不是中间件本身!!!

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

【问题讨论】:

    标签: express graphql apollo middleware apollo-server


    【解决方案1】:

    文档说:

    如果你想对中间件功能做一些事情,除了直接应用到你的应用程序之外,你可以调用server.getMiddleware 而不是server.applyMiddleware。 (server.applyMiddleware({ app, ...rest })app.use(server.getMiddleware(rest)) 的简写。)

    applyMiddlewaresource code 用于 apollo-server-express 包:

    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));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 1970-01-01
      • 2023-03-10
      • 2020-01-21
      • 2017-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多