# GQLExpressMiddleware

#### new GQLExpressMiddleware()

A handler that exposes an express middleware function that mounts a
GraphQL I/O endpoint. Typical usage follows:

    const app = express();
    app.use(/.../, new GQLExpressMiddleware([...classes]).middleware);

Source:
  GQLExpressMiddleware.js, line 50

### Methods

#### ⌾⠀customMiddleware([graphqlHttpOptions={graphiql: true}], patchFinalOpts) → {function}

If your needs require you to specify different values to `graphqlHTTP`,
part of the `express-graphql` package, you can use the `customMiddleware`
function to do so.

The first parameter is an object that should contain valid `graphqlHTTP`
options. See https://github.com/graphql/express-graphql#options for more
details. Validation is NOT performed.

The second parameter is a function that will be called after any options
have been applied from the first parameter and the rest of the middleware
has been performed. This, if not modified, will be the final options
passed into `graphqlHTTP`. In your callback, it is expected that the
supplied object is to be modified and THEN RETURNED. Whatever is returned
will be used or passed on. If nothing is returned, the options supplied
to the function will be used instead.

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`[graphqlHttpOptions={graphiql: true}]` | Object | optional | {graphiql: true} | standard set of `express-graphql` options. See above.
`patchFinalOpts` | function |  |  | see above

##### Returns:

`( function )`

a middleware function compatible with Express

Source:
  GQLExpressMiddleware.js, line 269

#### ⌾⠀makeRoot(req, res, gql) → {Promise.<Object>}

An asynchronous function used to parse the supplied classes for each
ones resolvers and mutators. These are all combined into a single root
object passed to express-graphql.

##### Parameters:

Name | Type | Description
--- | --- | ---
`req` | Request | an Express 4.x request object
`res` | Response | an Express 4.x response object
`gql` | Object | an object containing information about the graphql request. It has the format of `{ query, variables, operationName, raw }` as described here: https://github.com/graphql/express-graphql

##### Returns:

`( Promise.<Object> )`

a Promise resolving to an Object containing all
the functions described in both Query and Mutation types.

Source:
  GQLExpressMiddleware.js, line 82

#### ⌾⠀makeSchema() → {string}

A function that combines the IDL schemas of all the supplied classes and
returns that value to the middleware getter.

##### Returns:

`( string )`

a dynamically generated GraphQL IDL schema string

Source:
  GQLExpressMiddleware.js, line 197

#### ⎆⠀constructor(handlers)

For now, takes an Array of classes extending from GQLBase. These are
parsed and a combined schema of all their individual schemas is generated
via the use of ASTs. This is passed off to express-graphql.

##### Parameters:

Name | Type | Description
--- | --- | ---
`handlers` | Array.<GQLBase> | an array of GQLBase extended classes

Source:
  GQLExpressMiddleware.js, line 65

#### ⬇︎⠀middleware() → {function}

Using the express-graphql module, it returns an Express 4.x middleware
function.

##### Returns:

`( function )`

a function that expects request, response and next
parameters as all Express middleware functions.

Source:
  GQLExpressMiddleware.js, line 253

#### ⬇︎⠀middlewareWithoutGraphiQL() → {function}

Using the express-graphql module, it returns an Express 4.x middleware
function. This version however, has graphiql disabled. Otherwise it is
identical to the `middleware` property

##### Returns:

`( function )`

a function that expects request, response and next
parameters as all Express middleware functions.

Source:
  GQLExpressMiddleware.js, line 348