Package Exports
- graphql-api-koa
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (graphql-api-koa) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
graphql-api-koa
GraphQL API Koa middleware; the first Node.js GraphQL server to support native ESM via .mjs.
Setup
To install graphql-api-koa and graphql from npm run:
npm install graphql-api-koa graphqlSee the execute middleware examples to get started.
API
Table of contents
function errorHandler
Creates Koa middleware to handle errors. Use this before other middleware to catch all errors for a correctly formated GraphQL response. When intentionally throwing an error, create it with status and expose properties using http-errors or the response will be a generic 500 error for security.
Returns: Function — Koa middleware.
Examples
How to throw an error determining the response.
import Koa from 'koa' import bodyParser from 'koa-bodyparser' import { errorHandler, execute } from 'graphql-api-koa' import createError from 'http-errors' import schema from './schema' const app = new Koa() .use(errorHandler()) .use(async (ctx, next) => { if ( // It’s Saturday. new Date().getDay() === 6 ) throw createError(503, 'No work on the sabbath.', { expose: true }) await next() }) .use(bodyParser()) .use(execute({ schema }))
function execute
Creates Koa middleware to execute GraphQL. Use after the errorHandler and body parser middleware.
| Parameter | Type | Description |
|---|---|---|
options |
ExecuteOptions | Options. |
Returns: Function — Koa middleware.
Examples
A basic GraphQL API.
import Koa from 'koa' import bodyParser from 'koa-bodyparser' import { errorHandler, execute } from 'graphql-api-koa' import schema from './schema' const app = new Koa() .use(errorHandler()) .use(bodyParser()) .use(execute({ schema }))
type ExecuteOptions
execute Koa middleware options.
Type: object
| Property | Type | Description |
|---|---|---|
schema |
GraphQLSchema | GraphQL schema. |
validationRules |
Array<Function>? | Validation rules for GraphQL.js validate, in addition to the default GraphQL.js specifiedRules. |
rootValue |
*? | Value passed to the first resolver. |
contextValue |
*? | Execution context (usually an object) passed to resolvers. |
fieldResolver |
Function? | Custom default field resolver. |
override |
ExecuteOptionsOverride? | Override any ExecuteOptions (except override) per request. |
Examples
execute middleware options that sets the schema once but populates the user in the GraphQL context from the Koa context each request.
import schema from './schema' const executeOptions = { schema, override: ctx => ({ contextValue: { user: ctx.state.user } }) }
type ExecuteOptionsOverride
Overrides any ExecuteOptions (except override) per request.
Type: Function
| Parameter | Type | Description |
|---|---|---|
context |
object | Koa context. |
Returns: object — execute middleware options subset.
Examples
An execute middleware options override that populates the user in the GraphQL context from the Koa request context.
const executeOptionsOverride = ctx => ({ contextValue: { user: ctx.state.user } })