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

如何用 http 模块创建一个基础的 Web 服务器处理请求

http.createServer() 创建服务器实例后必须调用 .listen() 绑定端口,否则静默退出;req/res 是原生对象,需手动处理路径解析、响应头、res.end()、POST 数据流及错误捕获。用 http.createServer() 启动最简服务Node.js 的 http 模块自带,不用装包,直接 require('http') 就能用。核心是 http.createServer(),它返回一个服务器实例,调用 .listen() 才真正绑定端口。常见错误:只调了 createServer() 没调 .listen(),程序静默退出,浏览器访问超时;或者端口被占用,报错 Error: listen EADDRINUSE。createServer() 的回调函数接收两个参数:req(http.IncomingMessage)和 res(http.ServerResponse),不是 Express 那套 req/res,没 req.query、没 res.json()必须手动设置响应头,比如 res.writeHead(200, {'Content-Type': 'text/plain'}),否则浏览器可能乱码或下载文件必须显式调用 res.end(),哪怕只写 res.end('ok'),漏掉会导致连接挂起、请求卡死读取 URL 路径和查询参数得自己解析req.url 是原始字符串,比如 /user?id=123,不自动拆解。想拿到路径或参数,得靠 url.parse() 或更现代的 new URL()。容易踩坑:直接用 req.url.split('?')[0] 处理路径,遇到带 %20 或中文会出错;或者用 querystring.parse() 解析但没做 req.setEncoding('utf8'),导致 Buffer 乱码。推荐用 new URL(req.url, 'http://localhost'),兼容性好,自动解码,url.pathname 和 url.searchParams.get('id') 直接可用如果用 url.parse(req.url, true),第二个参数 true 表示自动解析 query 成对象,但注意 Node 15+ 已废弃该方法别在 req 上监听 'data' 事件前就调 res.end(),POST 请求体还没读完就关响应,客户端收不到完整结果处理 POST 数据要手动拼接 chunkreq 是个可读流,POST 的 body 默认以 Buffer 分块传来,不会自动聚合。不处理,req.body 这种东西根本不存在。 Trenz AI驱动的社交电商营销平台,专为TikTok Shop设计

http://www.cnnetsun.cn/news/2002437.html

相关文章:

  • 题解:AcWing 1128 信使
  • 基于改进YOLOv5的无人机航拍小目标检测算法研究
  • 终极指南:如何用OCAT轻松搞定OpenCore配置难题
  • 市场变化快,企业决策跟不上怎么办? 2026企业敏捷决策与AI Agent端到端落地实操
  • 基于安卓的实验室设备预约与管理系统毕设源码
  • 题解:AcWing 1068 环形石子合并
  • 如何精准控制Pagefind搜索排除规则:从入门到精通的完整指南
  • Go错误处理与panic恢复
  • FastStream依赖注入系统终极指南:基于FastDepends的强大DI机制解析
  • 避开爬虫坑:手把手教你合法获取百度地图POI边界数据(以学校为例)
  • 告别客户端混乱!用Mountain Duck把OneDrive、Google Drive都变成电脑本地硬盘(保姆级配置)
  • Rust 并发同步之屏障(Barrier):让多线程步调一致
  • Tangram GLSL着色器编程:自定义地图渲染效果完全教程
  • Malloy 与 VS Code 扩展:一站式数据分析和可视化工具使用教程
  • 1980~2025年中国各区县逆温数据
  • 终极musikcube快捷键指南:10个提升效率的必备技巧
  • 终极异步HTTP神器GRequests:Requests + Gevent = 爱的完整实战指南
  • 从零开始接触人工智能大模型,该如何学习?
  • Prisma Client Go查询构建器详解:10个高效数据库操作技巧
  • 终极RATH故障排除指南:15个常见问题及其解决方案
  • ViTPose:用视觉Transformer重新定义人体姿态估计的81.1 AP突破
  • 《算法导论》C++实现项目架构深度解析:掌握经典算法的终极指南
  • Spring Boot 4.0 Agent-Ready不是升级,是重构!3个真实故障案例揭示:未适配Instrumentation API导致APM数据丢失率高达71.3%
  • Symfony DomCrawler错误处理与调试:解决常见问题的完整指南
  • 避开这些坑:在Ubuntu for Raspberry Pi上成功安装OpenPLC运行时的完整指南
  • STM32 USB HS实战:从CDC串口到WinUSB(WCID)免驱升级,带宽提升10倍+的配置全记录
  • 从图形识别到智能解题:聊聊DenseNet在AI数学应用中的潜力与局限
  • 终极React Native for macOS API参考:完整函数库使用指南
  • Diablo II Resurrected自动化刷宝终极指南:告别重复操作,5步开启智能游戏体验
  • 企业 IT 投入大,却看不到实际产出怎么办?2026企业级智能体选型与ROI破局指南