当前位置: 首页 > news >正文

在 Node.js 中使用原生 `http` 模块,获取请求的各个部分:**请求行、请求头、请求体、请求路径、查询字符串** 等内容

在 Node.js 中使用原生 http 模块,可以通过 req 对象来获取请求的各个部分:请求行、请求头、请求体、请求路径、查询字符串 等内容。


✅ 一、基础结构

const http = require('http');
const url = require('url');const server = http.createServer((req, res) => {// 解析 URLconst parsedUrl = url.parse(req.url, true); // 第二个参数为 true 会自动解析 query// 请求行(method + URL)const method = req.method;const fullUrl = req.url;// 请求路径const pathname = parsedUrl.pathname;// 查询字符串(对象形式)const query = parsedUrl.query;// 请求头const headers = req.headers;// 请求体(需要手动拼接)let body = '';req.on('data', chunk => {body += chunk;});req.on('end', () => {console.log('--- 请求信息 ---');console.log('请求方法:', method);console.log('请求路径:', pathname);console.log('查询参数:', query);console.log('请求头:', headers);console.log('请求体:', body);res.writeHead(200, { 'Content-Type': 'application/json' });res.end(JSON.stringify({ code: 0, msg: 'OK' }));});
});server.listen(3000, () => {console.log('Server is running at http://localhost:3000');
});

✅ 二、字段说明

内容获取方式说明
请求方法req.method如 GET、POST、PUT 等
请求完整路径req.url包括 ?query=xxx
请求路径url.parse(req.url).pathname去除 query 的纯路径
查询字符串url.parse(req.url, true).query自动解析为对象
请求头req.headers是一个对象,所有 header 键小写
请求体手动拼接监听 data / end仅 POST/PUT 等方法时有数据

✅ 三、示例请求

请求:

POST /user?id=100&name=tom HTTP/1.1
Host: localhost:3000
Content-Type: application/json{"age": 20
}

打印结果:

请求方法: POST
请求路径: /user
查询参数: { id: '100', name: 'tom' }
请求头: {host: 'localhost:3000','content-type': 'application/json',...
}
请求体: { "age": 20 }

✅ 四、如果你想处理 JSON 请求体

可以加个判断来解析:

if (headers['content-type'] === 'application/json') {const data = JSON.parse(body);console.log('解析后的 JSON 数据:', data);
}
http://www.xdnf.cn/news/31843.html

相关文章:

  • Python爬虫实战:获取网易新闻数据
  • Windows系统安装`face_recognition`
  • 2. ubuntu20.04 和VS Code实现 ros的输出 (C++,Python)
  • DeepSeek与Napkin:信息可视化领域的创新利器
  • [matlab]南海地形眩晕图代码
  • Github 2025-04-19Rust开源项目日报 Top10
  • Prompt-Tuning 提示词微调
  • 机器学习核心算法全解析:从基础到进阶的 18 大算法模型
  • MySQL运维三部曲初级篇:从零开始打造稳定高效的数据库环境
  • 10软件测试需求分析案例-查询学习信息
  • 详讲Linux下进程等待
  • Go-zero框架修改模版进行handler统一响应封装
  • 手撕 简易HashMap
  • YOLO11改进-Backbone-使用MobileMamba替换YOLO backbone 提高检测精度
  • 在服务器上部署MinIO Server
  • JMeter实现UI自动化测试的完整方案
  • 配置管理与系统文档
  • MyImgConverter:图片批量处理工具
  • 智能提示语全周期优化系统:云原生架构设计与工程实践
  • LPDDR中读操作不存在Additive Latency(AL)的技术思考
  • opencv 最近邻插值法的原理
  • 集合框架(详解)
  • 手机投屏到电视方法
  • 从UDS协议学习ISO网络七层架构:汽车诊断网络协议的分层逻辑剖析
  • vue3专题1------父组件中更改子组件的属性
  • 应急响应篇近源攻击Docker镜像容器分析Dockfile路径定位基线扫描
  • MPTCP 的吞吐困局
  • 数据库基础-B+树
  • 使用 #pragma warning(push) 局部开启更高等级
  • 性能比拼: Elixir vs Go