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 (避免多余请求)
  • 防止路径遍历攻击 (...)
  • 使用流式传输大文件
相关推荐
2401_868534785 小时前
指令集-最常用 Linux 命令速查手册(整合版)
linux·网络协议
OpenCloudOS5 小时前
从快速响应到问题发现:一次backport挖出全新漏洞CVE-2026-76641
服务器·网络·安全
张文君5 小时前
ubuntu26.04从ext4改成mdadm的raid1+lvm启动
linux·运维·网络
德迅云安全-上官5 小时前
游戏攻防反套路:德迅云安全游戏盾如何破解黑产的“低成本精准打击”
网络·安全·游戏
2401_868534785 小时前
服务器实战
网络·beautifulsoup
ouynagda6 小时前
Linux 进程管理详解:从概念到实践
linux·运维·网络
dog2507 小时前
再论 TCP 的流式传输
网络·网络协议·tcp/ip
xia5420464467 小时前
业务安全之信用卡撞库分析
网络·安全
德迅云安全杨德俊8 小时前
游戏攻防反套路:游戏盾如何破解黑产的“低成本精准打击”
网络·安全·游戏
zbyyd9 小时前
Linux 多线程:互斥锁 & 信号量
linux·c语言·开发语言·网络