GraphQL Yoga v4 documentation (superseded by v5): Hapi allows you to build powerful, scalable applications, with minimal overhead and full out-of-the-box functionality - your code, your way.
Hapi allows you to build powerful, scalable applications, with minimal overhead
and full out-of-the-box functionality - your code, your way.
It continues to be the proven choice for enterprise-grade backend needs.
Installation
npm i @hapi/hapi graphql-yoga graphql
yarn add @hapi/hapi graphql-yoga graphql
pnpm add @hapi/hapi graphql-yoga graphql
bun add @hapi/hapi graphql-yoga graphql
Example
import http from 'node:http'import { Readable } from 'node:stream'import { createSchema, createYoga } from 'graphql-yoga'import Hapi from '@hapi/hapi'import { schema } from './my-graphql-schema'interface ServerContext { req: Hapi.Request h: Hapi.ResponseToolkit}const yoga = createYoga<ServerContext>({ schema })const server = Hapi.server({ port: 4000 })server.route({ method: '*', path: yoga.graphqlEndpoint, options: { payload: { // let yoga handle the parsing output: 'stream' } }, handler: async (req, h) => { const { status, headers, body } = await yoga.handleNodeRequest(req.raw.req, { req, h }) const res = h.response( Readable.from(body, { // hapi needs the stream not to be in object mode objectMode: false }) ) for (const [key, val] of headers) { res.header(key, val) } return res.code(status) }})server.start()