graphql-helix
express-graphql
Our great sponsors
graphql-helix | express-graphql | |
---|---|---|
17 | 14 | |
831 | 6,386 | |
-0.2% | - | |
0.0 | 6.1 | |
19 days ago | about 1 year ago | |
TypeScript | TypeScript | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
graphql-helix
-
Apollo Layoffs
Depends on language, I've build GraphQL servers in a few, though mostly JavaScript and Python. For Python I used to use Graphene, these days I use Strawberry.
For JavaScript, I originally used graphql-js and express-graphql, as these were the original libraries and I was a literal day 1 adopter. All the libraries are essentially just wrappers around graphql-js, so it's still viable to use directly. But for schema-building I now use Pothos (https://pothos-graphql.dev/), I'd probably use graphql-helix as the http layer (https://github.com/contra/graphql-helix).
-
Does Apollo GraphQL cost money to use in production? And other beginner questions about GraphQL
If you want a lower level graphql server https://graphql-helix.vercel.app/ or https://benzene.vercel.app/ might be worth checking out.
-
Code-first schema definition
While there are many GraphQL server packages available, we need one that will play nicely with Nuxt3's server engine (Nitro / h3). In the spirit of keeping things extensible and framework-agnostic, GraphQL Helix seems like a really good choice. Let's add it to our project:
-
What's next?
Looks interesting, have you tried graphql-helix?
-
When to use multiple endpoints in GraphQL
When using a JavaScript server, a convenient way to achieve this is with GraphQL Helix, which decouples the handling of the HTTP request from the GraphQL server. With Helix, we can have the routing logic be handled by a Node.js web framework (such as Express.js or Fastify), and then — depending on the requested path (i.e., the requested endpoint — we can provide the corresponding schema to the GraphQL server.
-
a first look at graphQL helix
GraphQL Helix is a framework and runtime agnostic collection of utility functions for building your own GraphQL HTTP server. Instead of providing a complete HTTP server or middleware plugin function, GraphQL Helix only provides a handful of functions for turning an HTTP request into a GraphQL execution result. You decide how to send back the response.
-
Introducing Envelop - The GraphQL Plugin System
import { envelop, useSchema, useLogger } from '@envelop/core'; import fastify from 'fastify'; import { processRequest, getGraphQLParameters } from 'graphql-helix'; // This creates the `getEnveloped` function for us. Behind the scense the wrapped functions are created once, here. const getEnveloped = envelop({ plugins: [useSchema(schema), useLogger()], }); const app = fastify(); app.route({ method: ['POST'], url: '/graphql', async handler(req, res) { // Here we can pass the request and make available as part of the "context". // The return value is the a GraphQL-proxy that exposes all the functions. const { parse, validate, contextFactory, execute, schema } = getEnveloped({ req, }); const request = { body: req.body, headers: req.headers, method: req.method, query: req.query, }; const { operationName, query, variables } = getGraphQLParameters(request); // Here, we pass our custom functions to Helix, and it will take care of the rest. const result = await processRequest({ operationName, query, variables, request, schema, parse, validate, execute, contextFactory, }); if (result.type === 'RESPONSE') { res.status(result.status); res.send(result.payload); } else { // You can find a complete example with Subscriptions and stream/defer here: // https://github.com/contrawork/graphql-helix/blob/master/examples/fastify/server.ts res.send({ errors: [{ message: 'Not Supported in this demo' }] }); } }, }); app.listen(3000, () => { console.log(`GraphQL server is running...`); });
-
Subscriptions and Live Queries - Real Time with GraphQL
Fortunately, we now have libraries like Graphql Helix, which, in my humble opinion, should replace express-graphql as the reference HTTP implementation since GraphQL Helix is also not tied to any web server framework.
-
GraphQL - Diving Deep
If you are using Node.js there are a lot of implementations of GraphQL servers with a few being express-graphql, apollo-server, mercurius, graphql-helix and more. And if you are using other languages, you can see a great list here
-
The Stack #1
Graphql Helix
express-graphql
-
How to define schema once and have server code and client code typed? [Typescript]
It looked a little janky but it actually worked fine. But then I needed file uploads. Something graphql-zeus does not support. So I had to create a small wrapper for the SDK created so that it worked. And then also express-graphql, the server I was using, was deprecated.
-
Apollo Server v4 Breaking Changes. Time to move away?
This seems like a minor deal unless you're not using Express as your web framework. And an important note here is that Express GraphQL is being deprecated by the GraphQL Foundation. So if you're using Express for a GraphQL API, you should move away from it anyway.
-
Learn How to Build a GraphQL API in Node.js Using Apollo Server
You might have seen other GraphQL server solutions where the schema is implemented by using a more programmatic approach. Here is an example of how schemas are implemented using the express-graphql library. (link: https://github.com/graphql/express-graphql)
-
With Cube GraphQL API, you can query data warehouses like BigQuery and dozens of SQL-enabled databases like Postgres using GraphQL
I'm not sure where the "8MB limit" comes from but, indeed, there are issues like this where, in some implementations, the response size is limited to 100KB: https://github.com/graphql/express-graphql/issues/346
-
What's your experience with Go and GraphQL? Learning Go coming from Node
With Node I used express-graphql as opposed to something like Apollo because it's lighter and less heavy on resources compared to Apollo.
-
a first look at graphQL helix
Daniel Rearden listed the following reasons pushing him to create Helix, believing that these factors were absent from popular solutions like Apollo Server, express-graphql and Mercurius:
-
how to deploy a graphQL server with docker and fly
Express GraphQL is a library for building production ready GraphQL HTTP middleware. Despite the emphasis on Express in the repo name, you can create a GraphQL HTTP server with any HTTP web framework that supports connect styled middleware. This includes Connect itself, Express and Restify.
-
GraphQL - Diving Deep
If you are using Node.js there are a lot of implementations of GraphQL servers with a few being express-graphql, apollo-server, mercurius, graphql-helix and more. And if you are using other languages, you can see a great list here
-
What is the best way to set up a GraphQL server?
express-graphql GitHub Repository
-
REST vs. gRPC vs. GraphQL
Not sure about other libraries but it's certainly not the case for express-graphql on node.js. You can tie the graphql endpoint to any method you like. On the site I work on, we have a graphql endpoint that only accepts GET requests in production and is thus cacheable by Cloudfront. In dev and staging we accept all requests so that GraphIQL works.
What are some alternatives?
graphql-yoga - 🧘 Rewrite of a fully-featured GraphQL Server with focus on easy setup, performance & great developer experience. The core of Yoga implements WHATWG Fetch API and can run/deploy on any JS environment.
apollo-server - 🌍 Spec-compliant and production ready JavaScript GraphQL server that lets you develop in a schema-first way. Built for Express, Connect, Hapi, Koa, and more.
Hasura - Blazing fast, instant realtime GraphQL APIs on your DB with fine grained access control, also trigger webhooks on database events.
mercurius - Implement GraphQL servers and gateways with Fastify
Prisma - Next-generation ORM for Node.js & TypeScript | PostgreSQL, MySQL, MariaDB, SQL Server, SQLite, MongoDB and CockroachDB
nestjs-graphql - GraphQL (TypeScript) module for Nest framework (node.js) 🍷
graphql-jit - GraphQL execution using a JIT compiler
TypeGraphQL - Create GraphQL schema and resolvers with TypeScript, using classes and decorators!
graphql-ws - Coherent, zero-dependency, lazy, simple, GraphQL over WebSocket Protocol compliant server and client.
graphql-helix-docker