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 (避免多余请求)
  • 防止路径遍历攻击 (...)
  • 使用流式传输大文件
相关推荐
便利店102433 分钟前
企业远程办公如何打通内网?网络层隧道与封装直觉
运维·服务器·网络·vpn·隧道
00后程序员张1 小时前
抓包鹰 电脑本机网络连接表怎么看?哪些程序在联网 进程归属与可疑 IP 追溯
网络协议·计算机网络·网络安全·ios·adb·https·udp
砚凝霜1 小时前
软考网络工程师|第 6 章 网络安全基础、攻击、等保完整备考笔记
网络·笔记·web安全
运维行者_1 小时前
网络监控与ITSM集成:从告警到工单,实现运维自动化闭环
开发语言·网络·分布式·后端·架构·flask·php
数据知道2 小时前
SSRF 漏洞实战:内网探测、云元数据窃取一条龙
网络·安全·网络安全
我爱cope2 小时前
【计算机网络 | 物理层3:数字编码与调制:比特如何变成可传输的信号?】
网络·学习·计算机网络
潘志宏_ZHPAN2 小时前
智能体互联网:原理、架构与开发实践—项目6:智能体安全与生命周期管理
网络·安全
147API2 小时前
AI 图片编辑接口报 400 怎么排查?先读错误体,再查参数、图片与 mask
网络·人工智能
戴西软件3 小时前
戴西CAxWorks.VPG车辆工程仿真软件技术解析(上)——安全仿真体系的自动化构建
运维·网络·数据库·人工智能·算法·安全·自动化
砚凝霜3 小时前
软考网络工程师|第 6 章 应用层安全协议、防火墙完整备考笔记
网络·笔记·安全