Apollo Koa Implementation for a Multi Tenant GraphQL API
This Apollo Koa implementation is created for our multi-tenant headless ecommerce service Crystallize. It is heavily inspired by apollo-server-koa but leverages koa’s middleware paradigm, thus making it easy to add path parameters, which is our preferred way of making our API multi-tenant. A feature like this was suggested for the official implementation several times, but since this didn’t seem to gain any traction, we implemented it ourselves and released it as open-source.
Choose Your Koa Stack
As a developer, you should decide how you want to use the Koa middleware stack. For that reason, we only include the bare minimum so that you can choose how you want to do body parsing or if you want to expose the GraphQL playground. You are in control.
Simple GraphQL Server Example
A basic example of a GraphQL server with this Koa middleware is shown below. This approach makes it easy to add things like authorization and authentication as part of the Koa stack. A more complete and involved example can be found in the project’s README.