---
title: graphql-http
---

{/* title can be removed in Nextra 4, since sidebar title will take from first h1 */}

# `graphql-http`

The [official `graphql-http` package](https://github.com/graphql/graphql-http) provides a simple way to create a fully compliant GraphQL server. It has a handler for Node.js native [`http`](https://nodejs.org/api/http.html), together with handlers for well-known frameworks like [Express](https://expressjs.com/), [Fastify](https://www.fastify.io/) and [Koa](https://koajs.com/); as well as handlers for different runtimes like [Deno](https://deno.land/) and [Bun](https://bun.sh/).

## Express

```js
import { createHandler } from "graphql-http/lib/use/express" // ES6
const { createHandler } = require("graphql-http/lib/use/express") // CommonJS
```

### createHandler

```ts
function createHandler({
  schema,
  rootValue,
  context,
  formatError,
  validationRules,
}: {
  rootValue?: any,
  context?: any,
  formatError?: Function,
  validationRules?: any[],
}): Handler
```

Constructs an Express handler based on a GraphQL schema.

See the [tutorial](/graphql-js/running-an-express-graphql-server/) for sample usage.

See the [GitHub README](https://github.com/graphql/graphql-http) for more extensive documentation, including how to use `graphql-http` with other server frameworks and runtimes.