12 HTTP模块之处理请求和响应的内容
在上篇文章中,我们介绍了如何使用 Node.js 创建一个简单的 HTTP 服务器。在这篇文章中,我们将深入探讨如何处理请求和响应的内容。这是理解 Node.js HTTP 模块的核心部分,能够帮助我们构建更加复杂和功能丰富的应用。
处理 HTTP 请求
当客户端(如浏览器)向我们的服务器发送请求时,服务器会接收到一个请求对象。在 Node.js 中,我们可以利用 http
模块的 createServer
方法来处理这些请求。该方法接收两个参数:一个处理请求的回调函数和一个可选的对象。
请求对象
请求对象包含了请求的所有信息,比如请求方法、请求头和请求路径等。我们通常对 req.method
和 req.url
非常感兴趣。
下面是一个简单示例,展示了如何处理 GET 和 POST 请求:
1 | const http = require('http'); |
分析代码
在上面的代码中,我们创建了一个 HTTP 服务器并监听 3000 端口。根据 req.method
的值,我们可以判断请求的方法:
- 如果是
GET
方法,返回一段文本。 - 如果是
POST
方法,收集所有的数据块,并在end
事件触发时响应包含数据的结果。 - 对于其他方法,我们返回 405 状态码,表示不支持的请求方法。
处理 HTTP 响应
响应是指服务器如何返回数据给客户端。在处理 HTTP 响应时,我们需要设置正确的状态码和响应头信息,以及响应主体内容。
设置响应头
可以通过 res.writeHead
方法来设置响应头。该方法接收两个参数:状态码和一个对象,后者包含了响应头信息。
响应体
可以通过 res.end
方法结束响应,并可以传入响应体内容。
下面是一个完整的例子,演示如何返回 JSON 格式的数据:
1 | const http = require('http'); |
在这个例子中,我们设置了一个 GET 请求,当访问 /data
路径时,返回 JSON 数据。这样,客户端将能以 JSON 格式接收数据。
小结
在这一篇中,我们学习了如何处理 HTTP 请求和响应的内容。掌握了如何获取请求信息,如何根据请求生成相应的响应内容。这是构建 Node.js 应用的核心技能。
下一篇文章中,我们将学习如何安装和使用 Express 框架,以减少在处理请求和响应时的复杂性。通过 Express,我们将能够以更加优雅和简洁的方式来处理 HTTP 请求和响应。确保继续关注!
12 HTTP模块之处理请求和响应的内容