Hapi 阿波罗服务器集成
导言
阿波罗服务器集成,与哈庇一起使用.
这是一个简单的软件包,可以方便地将自己的Hapi服务器执行与阿波罗服务器实例连接.
所需资源
- 节点.js v16 或稍后时间
- Hapi v20.x (英语) 或稍后时间
- 图QL.js v16 或稍后时间
- 阿波罗服务器 v4 QQ v5 或稍后时间
注: 阿波罗服务器 v5 需要节点JS v20.x或更高
安装
npm install @as-integrations/hapi @apollo/server graphql @hapi/hapi
使用量
设置 哈皮,哈皮,哈比,哈比,哈比,哈比,哈比,哈比,哈比,哈比 打开 阿波罗服务器 就像你通常会,然后通过使用 hapiApollo 插件 :
import { Server } from '@hapi/hapi';
import { ApolloServer, BaseContext } from "@apollo/server";
import hapiApollo from "@as-integrations/hapi";
// ...
// create the apollo server instance and start it
const apolloServer = new ApolloServer<BaseContext>({
typeDefs,
resolvers,
});
await apolloServer.start();
// create the hapi server
const hapi = new Server({
host: 'localhost',
port: 5000
});
// ...
// register the plugin with the hapi server and provide the apollo instance in plugin config
await hapi.register({
plugin: hapiApollo,
options: {
apolloServer,
path: '/graphql'
}
});
await hapi.start();
说明: 你必须打电话等待 apollo.start() 在使用整合之前.
ES5 使用量
如果您正在使用ES5或者正在使用要求()来使用此模块,您可能需要像这样引用默认导出 :
const hapiApollo = require("@as-integrations/hapi").default;
A. 背景情况
阿波罗服务器 v4 已将上下文设置移出 ApolloServer 建筑师.
定义你自己的上下文功能并将其传递给 context 选项.
例如:
await hapi.register({
plugin: hapiPlugin,
options: {
context: async ({ request }) => ({
token: request.headers.token
}),
apolloServer
}
});
路由配置
此模块创建的 Hapi 路由的其他配置可以通过 获取Route(获得/选项路由)或后Route(后路由). 两种支持选项、规则和虚拟 配置 .
例如,要在邮递路线上添加最大上传大小:
await hapi.register({
plugin: hapiPlugin,
options: {
context: async ({ request }) => ({
token: request.headers.token
}),
apolloServer,
postRoute: {
options: {
payload: {
maxBytes: 1024
}
}
}
}
});
