基于上一篇的项目继续深入学习和介绍项目中如何使用GraphQl.本篇更侧重于实际项目中使用GraphQL.如果还没有了解基本的GraphQl知识和没用想要新建项目开始演练的可从
上一篇开始如何 在NodeJs搭建GraphQL service Apollo Server (1).
1.重构app.js和service.mjs
1.1 修改service.mjs
上一篇提到我们使用的是epress-generator创建的的我们nodejs的express项目.所以我们当时开辟了两个进程挂载server. Aollo Server很贴心的支持express,所以我们现在(2024/5) 可以在一个进程挂载Nodejs的epress server 和Graphql的plugin server.
在Graphql的实际项目中我们更习惯使用http,rest这种方式去发送和获取数据.首先安装一个扩展包 datasource-rest
npm i @apollo/datasource-rest
Apollo的rest扩展包可以方便我fetch数据和编写fetch的一些列有relate的操作函数.
在sercive.mjs
import { expressMiddleware } from '@apollo/server/express4';
import { ApolloServerPluginDrainHttpServer } from '@apollo/server/plugin/drainHttpServer'
引入rest包和express的中间件包
创建express得server和设置Apollp server.并启动Apollo 的服务.
const httpServer = http.createServer(app);
// Set up Apollo Server
const server = new ApolloServer({
typeDefs,
resolvers,
plugins: [ApolloServerPluginDrainHttpServer({ httpServer })],
});
await server.start();
1.2 创建nodejs中间件
app.use(
'/graphql',
cors(),
bodyParser.json(),
expressMiddleware(server, {
context: async () => {
const { cache } = server;
return {
dataSources: {
randomUserApi: new GetUserApi({ cache }),
},
}
}
}),
);
其中 dataScource可以理解指代的是我们rest api的api集合.
randomUserApi 这个就是我们的api的接口名称
GetUserApi: 实际rest的实体(实例)&nbs
深入理解GraphQL在Node.js项目中的应用与实践

最低0.47元/天 解锁文章
1282

被折叠的 条评论
为什么被折叠?



