H3 和 nuxt 的阿波罗服务器集成
此软件包允许您轻松整合 阿波罗服务器 还有你的 h3 (韩语) 或者说 数值 3 应用.
在 Nuxt 3 中定义 GraphQL 服务器时, 您可能需要查看 GraphQL 服务器工具包 Nuxt 模块。 。 。 .
安装
# npm
npm install @apollo/server graphql @as-integrations/h3
# yarn
yarn add @apollo/server graphql @as-integrations/h3
# pnpm
pnpm add @apollo/server graphql @as-integrations/h3
与 Nuxt v3 用法
创建一个 服务器 API 路由 配置 Apollo 服务器实例 文档 然后导出为事件处理器 :
import { ApolloServer } from '@apollo/server'
import { startServerAndCreateH3Handler } from '@as-integrations/h3'
const apollo = new ApolloServer({
// Specify server options like schema and resolvers here
})
export default startServerAndCreateH3Handler(apollo, {
// Optional: Specify context
context: (event) => {
/*...*/
},
})
用h3时
创建并配置 Apollo 服务器实例 文档 并注册为您的路径处理器 h3 应用.
import { createApp } from 'h3'
import { ApolloServer } from '@apollo/server'
import { startServerAndCreateH3Handler } from '@as-integrations/h3'
const apollo = new ApolloServer({
// Specify server options like schema and resolvers here
})
export const app = createApp()
app.use(
'/api',
startServerAndCreateH3Handler(apollo, {
// Optional: Specify context
context: (event) => {
/*...*/
},
}),
)
然后按常规运行您的 h3 服务器, 例如: npx --yes listhen -w --open ./app.ts。 。 。 .
访问 http://localhost:30/api 在您的浏览器中访问阿波罗沙盒.
使用 WebSockets 订阅
此软件包还支持通过 WebSockets 订阅. 要启用此特性, 您需要安装 graphql-ws 软件包 :
# npm
npm install graphql-ws
# yarn
yarn add graphql-ws
# pnpm
pnpm add graphql-ws
然后,你可以在您的 WebSocket 处理器中添加 h3 应用 defineGraphqlWebSocketHandler 或者说 defineGraphqlWebSocket 函数。 以下是一个将HTTP和WebSocket处理器合并在一个应用程序中的例子.
import { createApp } from 'h3'
import { ApolloServer } from '@apollo/server'
import { startServerAndCreateH3Handler } from '@as-integrations/h3'
import { defineGraphqlWebSocketHandler } from '@as-integrations/h3/websocket'
import { makeExecutableSchema } from '@graphql-tools/schema'
// Define your schema and resolvers
const typeDefs = `...`
const resolvers = {
/*...*/
}
const schema = makeExecutableSchema({ typeDefs, resolvers })
const apollo = new ApolloServer({ schema })
export const app = createApp()
app.use(
'/api',
startServerAndCreateH3Handler(apollo, {
websocket: defineGraphqlWebSocketHandler({ schema }),
}),
)
然后可以使用阿波罗沙盒或其他支持此选项的客户端连接到 WebSocket 端点 graphql-ws 协议.
见 WebSocket 示例 一个完整的例子.
发展
- 克隆此寄存器
- 启用 核心软件包 使用
corepack enable(使用时npm i -g corepack用于节点.js < 16.10. - 使用
pnpm install。 。 。 . - 使用
pnpm test和一体化测试pnpm test:integration。 。 。 .
许可证
由 所制
原载 MIT 许可证。 。 。 .