GraphQL Yoga v3 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
yarn add @hapi/hapi
pnpm add @hapi/hapi
bun add @hapi/hapi
npm i graphql
yarn add graphql
pnpm add graphql
bun add graphql
npm i graphql-yoga
yarn add graphql-yoga
pnpm add graphql-yoga
bun add graphql-yoga
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( // will be an incoming message because the payload output option is stream req.payload as http.IncomingMessage, { req, h } ) const res = h.response().code(status) for (const [key, val] of headers) { res.header(key, val) } return Readable.from(body, { // stream cannot be in object mode objectMode: false }) }})server.start()