apollo-server vs express-graphql
Servidores GraphQL en Node.js
apollo-serverexpress-graphqlPaquetes similares:

Servidores GraphQL en Node.js

Apollo Server y Express-GraphQL son bibliotecas populares para implementar servidores GraphQL en aplicaciones Node.js. Apollo Server es una solución completa que proporciona herramientas para la creación de APIs GraphQL, incluyendo características avanzadas como la integración con Apollo Client y soporte para suscripciones en tiempo real. Por otro lado, Express-GraphQL es un middleware que permite agregar GraphQL a aplicaciones Express, ofreciendo una forma más ligera y flexible de implementar GraphQL sin muchas de las características adicionales que Apollo Server proporciona.

Tendencia de descargas de npm

3 Años

Ranking de GitHub Stars

Detalle de estadísticas

Paquete
Descargas
Stars
Tamaño
Issues
Publicación
Licencia
apollo-server013,95826.6 kB90hace 3 añosMIT
express-graphql06,249-54hace 6 añosMIT

Comparación de características: apollo-server vs express-graphql

Facilidad de uso

  • apollo-server:

    Apollo Server es conocido por su facilidad de uso y configuración rápida. Ofrece una experiencia de desarrollo fluida con una documentación extensa y ejemplos claros. La integración con Apollo Client también simplifica la gestión del estado y las consultas en el cliente.

  • express-graphql:

    Express-GraphQL es un middleware que se integra fácilmente en aplicaciones Express, lo que permite a los desarrolladores familiarizados con Express agregar GraphQL sin complicaciones. Sin embargo, puede requerir más configuración manual en comparación con Apollo Server.

Características avanzadas

  • apollo-server:

    Apollo Server incluye características avanzadas como la gestión de caché, soporte para suscripciones en tiempo real y herramientas de monitoreo y análisis. Estas características son útiles para aplicaciones que requieren un alto rendimiento y una experiencia de usuario dinámica.

  • express-graphql:

    Express-GraphQL es más básico y no incluye características avanzadas como la gestión de caché o suscripciones. Esto lo hace más ligero, pero también significa que los desarrolladores pueden necesitar implementar estas características manualmente si son necesarias.

Escalabilidad

  • apollo-server:

    Apollo Server está diseñado para ser escalable y puede manejar grandes volúmenes de tráfico y datos. Su arquitectura permite la optimización de consultas y la gestión eficiente de recursos, lo que lo convierte en una opción sólida para aplicaciones empresariales.

  • express-graphql:

    Express-GraphQL puede ser escalable, pero su rendimiento depende en gran medida de cómo se implemente en la aplicación Express. Los desarrolladores deben tener en cuenta la optimización de consultas y la gestión de recursos para asegurar un rendimiento adecuado.

Comunidad y soporte

  • apollo-server:

    Apollo tiene una comunidad activa y un amplio soporte, lo que facilita encontrar soluciones a problemas comunes y acceder a recursos adicionales. La documentación es extensa y se actualiza regularmente.

  • express-graphql:

    Express-GraphQL también tiene una buena comunidad, pero puede no ser tan extensa como la de Apollo. La documentación es clara, pero la falta de características avanzadas puede significar que los desarrolladores necesiten buscar soluciones personalizadas con más frecuencia.

Integración con otras herramientas

  • apollo-server:

    Apollo Server se integra fácilmente con otras herramientas del ecosistema Apollo, como Apollo Client y Apollo Federation, lo que permite construir aplicaciones más complejas y escalables con facilidad.

  • express-graphql:

    Express-GraphQL se integra bien con Express y otras bibliotecas de middleware, pero puede requerir más trabajo para integrarse con herramientas adicionales en comparación con Apollo Server.

Cómo elegir: apollo-server vs express-graphql

  • apollo-server:

    Elige Apollo Server si necesitas una solución integral que incluya herramientas avanzadas como la gestión de caché, integración con Apollo Client y suscripciones en tiempo real. Es ideal para proyectos que requieren un enfoque más completo y características adicionales para optimizar el rendimiento y la experiencia del desarrollador.

  • express-graphql:

    Elige Express-GraphQL si buscas una implementación más simple y ligera de GraphQL que se integre fácilmente en una aplicación Express existente. Es adecuado para proyectos que no necesitan las características avanzadas de Apollo y prefieren un enfoque más directo y minimalista.

README para apollo-server

Apollo Server

A TypeScript GraphQL Server for Express, Koa, Hapi, Lambda, and more.

npm version Build Status Join the community forum Read CHANGELOG

Apollo Server is a community-maintained open-source GraphQL server. It works with many Node.js HTTP server frameworks, or can run on its own with a built-in Express server. Apollo Server works with any GraphQL schema built with GraphQL.js--or define a schema's type definitions using schema definition language (SDL).

Read the documentation for information on getting started and many other use cases and follow the CHANGELOG for updates.

Principles

Apollo Server is built with the following principles in mind:

  • By the community, for the community: Its development is driven by the needs of developers.
  • Simplicity: By keeping things simple, it is more secure and easier to implement and contribute.
  • Performance: It is well-tested and production-ready.

Anyone is welcome to contribute to Apollo Server, just read CONTRIBUTING.md, take a look at the roadmap and make your first PR!

Getting started

To get started with Apollo Server:

  • Install with npm install apollo-server-<integration> graphql
  • Write a GraphQL schema
  • Use one of the following snippets

There are two ways to install Apollo Server:

  • Standalone: For applications that do not require an existing web framework, use the apollo-server package.
  • Integrations: For applications with a web framework (e.g. express, koa, hapi, etc.), use the appropriate Apollo Server integration package.

For more info, please refer to the Apollo Server docs.

Installation: Standalone

In a new project, install the apollo-server and graphql dependencies using:

npm install apollo-server graphql

Then, create an index.js which defines the schema and its functionality (i.e. resolvers):

const { ApolloServer, gql } = require('apollo-server');

// The GraphQL schema
const typeDefs = gql`
  type Query {
    "A simple type for getting started!"
    hello: String
  }
`;

// A map of functions which return data for the schema.
const resolvers = {
  Query: {
    hello: () => 'world',
  },
};

const server = new ApolloServer({
  typeDefs,
  resolvers,
});

server.listen().then(({ url }) => {
  console.log(`🚀 Server ready at ${url}`);
});

Due to its human-readability, we recommend using schema-definition language (SDL) to define a GraphQL schema--a GraphQLSchema object from graphql-js can also be specified instead of typeDefs and resolvers using the schema property:

const server = new ApolloServer({
  schema: ...
});

Finally, start the server using node index.js and go to the URL returned on the console.

For more details, check out the Apollo Server Getting Started guide and the fullstack tutorial.

For questions, the Apollo community forum is a great place to get help.

Installation: Integrations

While the standalone installation above can be used without making a decision about which web framework to use, the Apollo Server integration packages are paired with specific web frameworks (e.g. Express, Koa, hapi).

The following web frameworks have Apollo Server integrations, and each of these linked integrations has its own installation instructions and examples on its package README.md:

Context

A request context is available for each request. When context is defined as a function, it will be called on each request and will receive an object containing a req property, which represents the request itself.

By returning an object from the context function, it will be available as the third positional parameter of the resolvers:

new ApolloServer({
  typeDefs,
  resolvers: {
    Query: {
      books: (parent, args, context, info) => {
        console.log(context.myProperty); // Will be `true`!
        return books;
      },
    }
  },
  context: async ({ req }) => {
    return {
      myProperty: true
    };
  },
})

Documentation

The Apollo Server documentation contains additional details on how to get started with GraphQL and Apollo Server.

The raw Markdown source of the documentation is available within the docs/ directory of this monorepo--to contribute, please use the Edit on GitHub buttons at the bottom of each page.

Development

If you wish to develop or contribute to Apollo Server, we suggest the following:

  • Fork this repository

  • Install Direnv (a tool that automatically sets up environment variables in project directories) or nvm. We use nvm to ensure we're running the expected version of Node (and we use Direnv to install and run nvm automatically).

  • Install the Apollo Server project on your computer

git clone https://github.com/[your-user]/apollo-server
cd apollo-server
direnv allow  # sets up nvm for you; if you installed nvm yourself, try `nvm install` instead
  • Build and test
npm install
npm test
  • To run individual test files, run npm run pretest && npx jest packages/apollo-server-foo/src/__tests__/bar.test.ts. Note that you do need to re-compile TypeScript before each time you run a test, or changes across packages may not be picked up. Instead of running npm run pretest from scratch before each test run, you can also run tsc --build tsconfig.json --watch in another shell, or use the VSCode Run Build Task to run that for you.

Community

Are you stuck? Want to contribute? Come visit us in the Apollo community forum!

Maintainers

Who is Apollo?

Apollo builds open-source software and a graph platform to unify GraphQL across your apps and services. We help you ship faster with:

  • Apollo Studio – A free, end-to-end platform for managing your GraphQL lifecycle. Track your GraphQL schemas in a hosted registry to create a source of truth for everything in your graph. Studio provides an IDE (Apollo Explorer) so you can explore data, collaborate on queries, observe usage, and safely make schema changes.
  • Apollo Federation – The industry-standard open architecture for building a distributed graph. Use Apollo’s gateway to compose a unified graph from multiple subgraphs, determine a query plan, and route requests across your services.
  • Apollo Client – The most popular GraphQL client for the web. Apollo also builds and maintains Apollo iOS and Apollo Android.
  • Apollo Server – A production-ready JavaScript GraphQL server that connects to any microservice, API, or database. Compatible with all popular JavaScript frameworks and deployable in serverless environments.

Learn how to build with Apollo

Check out the Odyssey learning platform, the perfect place to start your GraphQL journey with videos and interactive code challenges. Join the Apollo Community to interact with and get technical help from the GraphQL community.