1.6 KiB
1.6 KiB
GraphQL Apollo
Plugin for Elysia to use GraphQL Apollo.
Installation
bun add graphql @elysiajs/apollo @apollo/server
Basic Usage
import { Elysia } from 'elysia'
import { apollo, gql } from '@elysiajs/apollo'
const app = new Elysia()
.use(
apollo({
typeDefs: gql`
type Book {
title: String
author: String
}
type Query {
books: [Book]
}
`,
resolvers: {
Query: {
books: () => {
return [
{
title: 'Elysia',
author: 'saltyAom'
}
]
}
}
}
})
)
.listen(3000)
Accessing /graphql should show Apollo GraphQL playground work with.
Context
Because Elysia is based on Web Standard Request and Response which is different from Node's HttpRequest and HttpResponse that Express uses, results in req, res being undefined in context.
Because of this, Elysia replaces both with context like route parameters.
const app = new Elysia()
.use(
apollo({
typeDefs,
resolvers,
context: async ({ request }) => {
const authorization = request.headers.get('Authorization')
return {
authorization
}
}
})
)
.listen(3000)
Config
This plugin extends Apollo's ServerRegistration (which is ApolloServer's' constructor parameter).
Below are the extended parameters for configuring Apollo Server with Elysia.
path
@default "/graphql"
Path to expose Apollo Server.
enablePlayground
@default process.env.ENV !== 'production'
Determine whether should Apollo should provide Apollo Playground.