【NodeJs】NodeJs专题之理解企业BFF框架原理
// 引入必要的模块
const express = require('express');
const graphqlHTTP = require('express-graphql');
const { makeRemoteExecutor } = require('@graphql-tools/remote-executor');
const { wrapSchema } = require('@graphql-tools/wrap');
const { fetch } = require('cross-fetch');
// 创建Express应用
const app = express();
// 配置GraphQL远程执行器,用于连接远程GraphQL服务
const executor = makeRemoteExecutor({
fetcher: fetch,
// 远程GraphQL服务的地址
schemaUrl: 'http://localhost:8000/graphql',
});
// 包装schema,并应用远程执行器
const schema = wrapSchema({ executor });
// 初始化GraphQL服务
app.use(
'/graphql',
graphqlHTTP({
schema,
graphiql: true, // 启用GraphiQL界面
})
);
// 启动服务器
const PORT = 4000;
app.listen(PORT, () => {
console.log(`BFF服务器运行在 http://localhost:${PORT}/graphql`);
});
这段代码创建了一个简单的Express应用,它使用express-graphql
中间件提供GraphQL服务。它使用@graphql-tools/remote-executor
来远程执行GraphQL查询,这使得BFF能够代理客户端的请求,并将它们转发到后端的GraphQL服务。代码还展示了如何使用wrapSchema
来包装schema,并应用远程执行器。最后,服务器监听在指定的端口上,并在控制台输出服务器地址。
评论已关闭