'What is the difference between apollo server and express-graphql
I would like to build an application and its recommended to use GraphQl for API,
I am not sure which platform to select and what are the differences.
apollo server vs express-graphql
I need to use TypeScript for the project too. Any good Idea would be appreciated.
Solution 1:[1]
Both are almost same.
Here are some trends, If you are intrested.
Solution 2:[2]
Below is the now deleted section from the apollo-server README comparing apollo-server to express-graphql.
Note that some of these arguments do not apply anymore e.g. express-grapqhl is now written in TypeScript. Hence the removal of this section from the README.
One observation is that apollo-server is too bloated, and is slowly showing a lack of maintenance. I would go with express-graphql instead if I were to pick one today. But this is personal preference and you should do your own due diligence.
There's also a community-maintained Koa port of express-graphql, called koa-graphql. Using either express-graphql, or koa-graphql, combined with something like envelop, you can achieve everything, if not more, the Apollo "ecosystem" provides in a more modular manner.
Comparison with
express-graphqlBoth Apollo Server and
express-graphqlare GraphQL servers for Node.js, built on top of thegraphql-jsreference implementation, but there are a few key differences:
express-graphqlworks with Express and Connect, Apollo Server supports Express, Connect, Hapi, Koa and Restify.- Compared to
express-graphql, Apollo Server has a simpler interface and supports exactly one way of passing queries.- Apollo Server separates serving GraphiQL (an in-browser IDE for exploring GraphQL) from responding to GraphQL requests.
express-graphqlcontains code for parsing HTTP request bodies, Apollo Server leaves that to standard packages like body-parser.- Apollo Server includes an
OperationStoreto easily manage whitelisting.- Apollo Server is built with TypeScript.
application/graphql requests
express-graphqlsupports theapplication/graphqlContent-Type for requests, which is an alternative toapplication/jsonrequest with only the query part sent as text. In the same way that we usebodyParser.jsonto parseapplication/jsonrequests for apollo-server, we can usebodyParser.textplus one extra step in order to also parseapplication/graphqlrequests. Here's an example for Express:'body-parser'; import { graphqlExpress } from 'apollo-server-express'; const myGraphQLSchema = // ... define or import your schema here! const helperMiddleware = [ bodyParser.json(), bodyParser.text({ type: 'application/graphql' }), (req, res, next) => { if (req.is('application/graphql')) { req.body = { query: req.body }; } next(); } ]; express() .use('/graphql', ...helperMiddleware, graphqlExpress({ schema: myGraphQLSchema })) .listen(3000); ```
Solution 3:[3]
Express-GraphQL is a piece of middleware, to quickly setup a GraphQL Server, either with Express, or any web-framework that supports middleware.
Apollo-server is a package that will sit on an existing node server and parse the GraphQL queries. (Very similar to express-graphql) You can use it with express, Koa etc.
My recommendation is use Graphql-yoga as it's built with apollo-server and express-graphql. And it's built and maintained by the Prisma Team.
Solution 4:[4]
Apollo-Server-Express and Express-Graphql are two most using libraries so far and there is no difference in them. I would recommend you to use any two of them.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | vivek |
| Solution 2 | |
| Solution 3 | |
| Solution 4 | Jamal Ashraf |
