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

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


✅ 一、基础结构

js 复制代码
const http = require('http');
const url = require('url');

const server = http.createServer((req, res) => {
  // 解析 URL
  const 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 等方法时有数据

✅ 三、示例请求

请求:

http 复制代码
POST /user?id=100&name=tom HTTP/1.1
Host: localhost:3000
Content-Type: application/json

{
  "age": 20
}

打印结果:

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

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

可以加个判断来解析:

js 复制代码
if (headers['content-type'] === 'application/json') {
  const data = JSON.parse(body);
  console.log('解析后的 JSON 数据:', data);
}
相关推荐
lang201509281 天前
Logback TCP 远程日志实战:构建高可用的集中式日志中心
网络协议·tcp/ip·logback
热爱生活的五柒1 天前
解决 npm install 一直在转圈的问题
前端·npm·node.js
跟着珅聪学java1 天前
Electron 中实现“字符串转图片”功能教程
node.js
tryCbest1 天前
Git与Node.js安装及常用命令详解
git·node.js
木子欢儿1 天前
Caddy存放ssl/tls证书的位置
网络·网络协议·ssl
Net_Walke1 天前
【网络协议】ECC非对称加密算法介绍
网络·网络协议
_DoubleL1 天前
Volta启动项目自动切换Node版本
前端·node.js
鲨辣椒100861 天前
TCP连接有多函数接口阻塞问题???——TCP并发服务器的实现
服务器·网络协议·tcp/ip
小杨勇敢飞1 天前
npm 安装 @openai/codex 后无法调用 codex 命令的完整解决过程:‘codex‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
前端·npm·node.js
北京耐用通信1 天前
耐达讯自动化CC-Link IE转Profinet网关:破解协议壁垒,赋能电机智控升级
人工智能·科技·物联网·网络协议·自动化·信息与通信