Me pregunto cuál es el motivo de esta configuración aparentemente incómoda (de 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 ¿Por qué estoy llamando a .applyMiddleware() y alimentándolo con mi app en lugar de usar app.use() , incluso parece de los documentos que Apollo solo está respondiendo solicitudes en /graphql ¿No sería mejor seguir el Express? API de,
let apollo = require('apollo-server').ApolloMiddleware app.use( '/graphql', apollo({ typeDefs, resolvers }) );¿Parece que Apollo está invirtiendo el flujo normal de middleware de Express? ¿Cuál es la ventaja de hacerlo a la manera de Apolo?
No trabajo con esos tipos, pero según el código que está allí, asumo que tiene que ver con el hecho de que agrega analizador de cuerpo, capacidad de carga, websockets (si opta por este) a la aplicación, así como una configuración conocida para las comprobaciones de estado del motor. Lo conocido tendría que estar en la raíz de acuerdo con esa especificación. Además, si usa suscripciones y websockets, escuchan httpServer.once('listening') , por lo que deben tener acceso a su aplicación. Si simplemente te dieran uno que pudieras montar, no app.listen en él, ya que lo app.listen por tu cuenta.
Solo desde el interior, esto es lo que esperaría, al menos.