Skip to content
/ gql Public

☁ Universal GraphQL HTTP middleware for Deno and Bun

License

Notifications You must be signed in to change notification settings

deno-libs/gql

Repository files navigation



nest badge GitHub Workflow Status Codecov

gql

Universal and spec-compliant GraphQL HTTP middleware for Deno and Bun. Based on graphql-http.

Features

Get started

The simplest setup with Deno.serve:

import { GraphQLHTTP } from 'jsr:@deno-libs/[email protected]/mod.ts'
import { makeExecutableSchema } from 'npm:@graphql-tools/[email protected]'
import { gql } from 'https://deno.land/x/[email protected]/mod.ts'

const typeDefs = gql`
  type Query {
    hello: String
  }
`

const resolvers = {
  Query: {
    hello: () => `Hello World!`,
  },
}

const schema = makeExecutableSchema({ resolvers, typeDefs })

Deno.serve({
  port: 3000,
  onListen({ hostname, port }) {
    console.log(`☁  Started on http://${hostname}:${port}`)
  },
}, async (req) => {
  const { pathname } = new URL(req.url)
  return pathname === '/graphql'
    ? await GraphQLHTTP<Request>({
      schema,
      graphiql: true,
    })(req)
    : new Response('Not Found', { status: 404 })
})

Then run:

$ curl -X POST localhost:3000/graphql -d '{ "query": "{ hello }" }' -H "Content-Type: application/json"
{
  "data": {
    "hello": "Hello World!"
  }
}

Or in the GraphQL Playground:

image