6 搭建GraphQL服务器之设置服务器与中间件

在上一篇中,我们选择了合适的 Node.js 框架,为我们的 GraphQL 服务器打下了基础。这一篇,我们将深入地探讨如何设置服务器与中间件,以确保我们能够正确地处理 GraphQL 请求。

1. 初始化项目

首先,确保你已经创建并进入了你的项目目录。然后,需要安装一些必要的依赖。我们将使用 Express 框架和 Apollo Server 来搭建我们的 GraphQL 服务器。

1
2
npm init -y
npm install express apollo-server-express graphql

2. 设置基础服务器

接下来,创建一个新的文件,命名为 server.js,并在其中设置基本的 Express 服务器和 Apollo Server。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// server.js
const express = require('express');
const { ApolloServer, gql } = require('apollo-server-express');

// 创建一个新的 Express 应用
const app = express();

// 初始化 ApolloServer
const server = new ApolloServer({
typeDefs: gql`
type Query {
hello: String
}
`,
resolvers: {
Query: {
hello: () => 'Hello, world!',
},
},
});

// 将 Apollo Server 中间件附加到 Express 应用
server.applyMiddleware({ app });

// 设置服务器端口
const PORT = process.env.PORT || 4000;

// 启动服务器
app.listen(PORT, () => {
console.log(`🚀 Server ready at http://localhost:${PORT}${server.graphqlPath}`);
});

代码分析

  • 在上面的代码中,我们首先引入了必要的模块,并创建了一个 Express 应用。
  • 接着我们用 ApolloServer 创建了一个新的 Apollo Server 实例,并定义了一个简单的 GraphQL 架构,包括一个 hello 查询。
  • 然后使用 server.applyMiddleware({ app }) 将 Apollo Server 作为中间件添加到 Express 应用中。这样,当我们访问 /graphql 路由时,Apollo Server 将处理这些请求。
  • 最后,我们启动了应用并监听 4000 端口或环境变量设置的端口。

3. 添加中间件

除了设置基本的 Apollo Server,我们还可以添加其他中间件。例如,你可以添加一些日志或认证中间件。

1
2
3
4
5
6
7
// 在 server.js 文件中,引入中间件
const morgan = require('morgan');

// 使用 morgan 中间件记录请求日志
app.use(morgan('dev'));

// ... 其它代码保持不变

代码分析

在上面的代码片段中,我们引入了 morgan 中间件,并将其应用于我们的 Express 服务器。这将帮助我们在控制台中查看每个请求的日志,非常有助于调试。

4. 测试 GraphQL 服务器

启动服务器后,打开浏览器,访问 http://localhost:4000/graphql,你应该会看到 Apollo Server 提供的 GraphQL Playground。你可以输入以下查询来测试我们的设置:

1
2
3
{
hello
}

如果服务器设置正确,你应该会看到以下响应:

1
2
3
4
5
{
"data": {
"hello": "Hello, world!"
}
}

5. 总结

通过上述步骤,我们成功地设置了一个基础的 GraphQL 服务器与中间件。我们使用了 ExpressApollo Server 来处理 GraphQL 请求,同时还添加了日志中间件以便于调试。在下一篇中,我们将深入定义 GraphQL 架构,并创建查询类型,以实现更复杂的数据交互。

确保在继续之前,你的服务器能够正常运行,并请随时回顾之前的步骤!

6 搭建GraphQL服务器之设置服务器与中间件

https://zglg.work/graphql-api-dev-zero/6/

作者

AI免费学习网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论