GraphQL Apollo Plugin â
Plugin for elysia for using GraphQL Apollo.
Install with:
bash
bun add graphql @elysiajs/apollo @apollo/server
bun add graphql @elysiajs/apollo @apollo/server
Then use it:
typescript
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(8080)
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(8080)
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.
typescript
const app = new Elysia()
.use(
apollo({
typeDefs,
resolvers,
context: async ({ request }) => {
const authorization = request.headers.get('Authorization')
return {
authorization
}
}
})
)
.listen(8080)
const app = new Elysia()
.use(
apollo({
typeDefs,
resolvers,
context: async ({ request }) => {
const authorization = request.headers.get('Authorization')
return {
authorization
}
}
})
)
.listen(8080)
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.