http模块知识点总结

核心概念

概念 说明

http.createServer() 创建一个 HTTP 服务器实例

server.listen(port, host, callback) 监听指定端口和主机,启动服务器

request 事件 每当有请求到达时触发,回调参数为 req(请求对象)和 res(响应对象)

req 常用属性 url、method、headers、httpVersion

res 常用方法 res.writeHead(statusCode, headers)、res.write(data)、res.end(data)

res 状态码 200(成功)、404(未找到)、500(服务器错误)等

Content-Type 告诉浏览器如何解析响应内容(如 text/html、application/json)

处理请求的常见模式

路由:根据 req.url 和 req.method 分发到不同逻辑。

获取查询参数:使用 url.parse(req.url, true).query。

获取 POST body:监听 data 和 end 事件,拼接 Buffer 或字符串。

返回静态文件:结合 fs 模块读取文件,设置正确的 Content-Type。

返回 JSON:Content-Type: application/json,res.end(JSON.stringify(obj))。

进阶话题

req.socket:获取客户端连接信息。

res.setHeader() 与 res.writeHead() 的区别。

流式响应:用 fs.createReadStream().pipe(res) 处理大文件。

HTTPS 支持:使用 https 模块,需提供证书。

Node.js http 模块

创建服务器

javascript 复制代码
- http.createServer([options][, requestListener])
  - 返回 http.Server 实例
- server.listen(port[, host][, backlog][, callback])
  - 监听端口,启动服务

事件模型

javascript 复制代码
- 事件: 'request' (最常用)
  - 回调: (req, res) => {}
- 事件: 'connection'
- 事件: 'close'

请求对象 req (http.IncomingMessage)

javascript 复制代码
- 属性
  - req.url        // 请求路径(含查询字符串)
  - req.method     // GET / POST / PUT / DELETE 等
  - req.headers    // 请求头对象
  - req.httpVersion
- 读取数据
  - req.on('data', chunk => {})   // 接收 POST body
  - req.on('end', () => {})       // 数据接收完毕

响应对象 res (http.ServerResponse)

javascript 复制代码
- 设置响应头
  - res.writeHead(statusCode, statusMessage?, headers?)
  - res.setHeader(name, value)
- 发送数据
  - res.write(chunk[, encoding][, callback])
  - res.end([data][, encoding][, callback])
- 状态码
  - 200 OK
  - 404 Not Found
  - 500 Internal Server Error

常见 Content-Type

javascript 复制代码
- text/html
- text/css
- application/javascript
- application/json
- image/png, image/jpeg

静态文件服务

  • 路径解析 (path 模块)
  • 读取文件 (fs 模块)
  • 设置正确 Content-Type
  • 错误处理 (404, 500)

与 URL 模块配合

javascript 复制代码
- const url = require('url');
- url.parse(req.url, true) -> 得到 query 对象

实用技巧

  • 统一路由分发 (switch 或 map)
  • 处理 favicon.ico (避免多余请求)
  • 防止路径遍历攻击 (...)
  • 使用流式传输大文件
相关推荐
小林ixn1 小时前
从“玩具工具”到“跨语言利器”:MCP 协议实战解析
运维·服务器·网络
2603_954708313 小时前
全维度容错设计,打造微电网安全运行屏障
服务器·网络·数据库·人工智能·分布式·安全
青岛前景互联信息技术有限公司3 小时前
以新标准为底座,前景互联打造高危场景智能接处警新体系
大数据·网络·人工智能
大飞记Python3 小时前
Linux命令速查手册(测试开发4年实战总结,附PDF)
linux·网络·pdf
AFinalStone3 小时前
Android 7系统网络(四)Native层(下)—netd Controller详解
android·网络
卖萌的斜阳4 小时前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
单片机·网络协议·tcp/ip
Sirius Wu4 小时前
OpenClaw(UpClaw)三层Tool全链路治理深度详解
网络·人工智能·架构·aigc
用户8334423966144 小时前
Qt6 实现 TCP/UDP/组播 透明中继抓包工具 | 流量录制回放 | 工业设备调试
网络协议
源图客4 小时前
云途物流API开发-鉴权认证(Java)
java·网络·python
huashengzsj4 小时前
Shopify个人建站如何搭建独立站:从零开始的完整指南
前端·网络·人工智能