gql
Universal GraphQL HTTP middleware for Deno.
Features
- ✨ Works with
std/http
, tinyhttp and Opine out-of-the-box - ⚡ GraphQL Playground integration (via
graphiql: true
)
Donate
🎁 FIRST 10 PATRONS WILL RECEIVE BONUS 5 DEV 🎁
The best way to support the project is to do staking on stakes.social. Note that you also get rewarded by staking, as well as the project author.
Get started
Vanilla
The simplest setup with std/http
:
import { serve } from 'https://deno.land/std@0.90.0/http/server.ts'
import { GraphQLHTTP } from 'https://deno.land/x/gql/mod.ts'
import { makeExecutableSchema } from 'https://deno.land/x/graphql_tools/mod.ts'
import { gql } from 'https://deno.land/x/graphql_tag/mod.ts'
const typeDefs = gql`
type Query {
hello: String
}
`
const resolvers = {
Query: {
hello: () => `Hello World!`
}
}
const schema = makeExecutableSchema({ resolvers, typeDefs })
const s = serve({ port: 3000 })
for await (const req of s) {
req.url.startsWith('/graphql')
? await GraphQLHTTP({
schema,
graphiql: true
})(req)
: req.respond({
status: 404
})
}
Then run:
$ curl -X POST localhost:3000/graphql -d '{ "query": "{ hello }" }'
{
"data": {
"hello": "Hello World!"
}
}
Or in GraphQL Playground: