在 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);
}
相关推荐
roamingcode41 分钟前
Claude Code NPM 包发布命令
前端·npm·node.js·claude·自定义指令·claude code
gc_22991 小时前
运行npm run命令报错“error:0308010C:digital envelope routines::unsupported”
npm·node.js
tan77º4 小时前
【Linux网络编程】分布式Json-RPC框架 - 项目设计
linux·服务器·网络·分布式·网络协议·rpc·json
zz-zjx5 小时前
Nodejs 与npm
前端·npm·node.js
半路_出家ren5 小时前
路由综合实验RIP,OSPF,BGP
网络·网络协议·rip·ospf·ebgp·ibgp
饮水机战神5 小时前
震惊!多核性能反降11%?node接口压力测试出乎意料!
前端·node.js
艾小码6 小时前
构建现代前端工程:Webpack/Vite/Rollup配置解析与最佳实践
前端·webpack·node.js
ChinaLzw6 小时前
配置npm国内源(包含主流npm镜像源地址)
npm·node.js
重启的码农7 小时前
NAT穿透技术:原理、实现与应用全景解析
网络协议
辉长六加110 小时前
nodejs和vue安装步骤记录
前端·javascript·vue.js·npm·node.js