@keystonejs/app-schema-router
v5.2.3
Published
KeystoneJS GraphQL App.
Downloads
29
Readme
GraphQL Schema Router
This is the last active development release of this package as Keystone 5 is now in a 6 to 12 month active maintenance phase. For more information please read our Keystone 5 and beyond post.
A KeystoneJS App that route requests to different GraphQL schemas.
The SchemaRouterApp
allows you to define a routerFn
which takes (req, res)
and returns
a routerId
, which is used to pick between different GraphQL schemas which exist at the same
apiPath
.
Usage
const { Keystone } = require('@keystonejs/keystone');
const { GraphQLAppPlayground } = require('@keystonejs/app-graphql-playground');
const { SchemaRouterApp } = require('@keystonejs/app-schema-router');
const { GraphQLApp } = require('@keystonejs/app-graphql');
const { AdminUIApp } = require('@keystonejs/app-admin-ui');
module.exports = {
keystone: new Keystone(),
apps: [
new GraphQLAppPlayground({ apiPath })
new SchemaRouterApp({
apiPath,
routerFn: (req) => req.session.keystoneItemId ? 'private' : 'public',
apps: {
public: new GraphQLApp({ apiPath, schemaName: 'public', graphiqlPath: undefined }),
private: new GraphQLApp({ apiPath, schemaName: 'private', graphiqlPath: undefined }),
},
}),
new AdminUIApp()
],
};
Config
| Option | Type | Default | Description |
| ---------- | ---------- | ------------ | -------------------------------------------------------------- |
| apiPath
| String
| /admin/api
| The GraphQL API path |
| routerFn
| Function
| () => {}
| A function which takes (req, res)
and returns a routerId
|
| apps
| Object
| {}
| An object with routerId
s as keys and GraphQLApp
s as values |