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 (避免多余请求)
  • 防止路径遍历攻击 (...)
  • 使用流式传输大文件
相关推荐
Safeploy安策数据13 小时前
专业机构 PCI 认证,守护支付数据隐私安全
网络·安全
fengfuyao98513 小时前
STM32 TIM8 两路互补PWM带死区控制程序
网络·stm32·嵌入式硬件
傻啦嘿哟13 小时前
指纹伪装:除了换IP,OpenClaw的浏览器指纹该如何配置
网络·网络协议·tcp/ip
米高梅狮子1 天前
03.网络类服务实践
linux·运维·服务器·网络·kubernetes·centos·openstack
June`1 天前
网络编程时内核究竟做了什么???
linux·服务器·网络
原来是猿1 天前
腾讯云服务器端口开放完全指南
服务器·网络·腾讯云
你的保护色1 天前
【无标题】
java·服务器·网络
楼兰公子1 天前
RK3588 + Linux7.0.3 网络工程调试错误速查手册
linux·网络·3588
IpdataCloud1 天前
稳定的企业级IP数据接口怎么选?可用性指标+离线库高可用方案
运维·网络·tcp/ip