Node.js 创建 HTTP 服务端

Node.js 创建 HTTP 服务端的用法总结 ,内容涵盖了 核心模块、基本用法、Express 简化用法、常见场景、错误处理、以及实用小贴士


✅ 一、Node.js 创建 HTTP 服务的方式

Node.js 使用内置的 http 模块即可快速创建一个 Web 服务,无需额外安装依赖。


✅ 二、最基础用法

js 复制代码
// server.js
const http = require('http');

const server = http.createServer((req, res) => {
  // 设置响应头
  res.writeHead(200, { 'Content-Type': 'text/plain' });

  // 发送响应内容
  res.end('Hello, Node.js HTTP Server!');
});

// 启动服务器
server.listen(3000, () => {
  console.log('HTTP server is running at http://localhost:3000');
});

✅ 三、常用功能场景

1. 区分路由

js 复制代码
const server = http.createServer((req, res) => {
  if (req.url === '/' && req.method === 'GET') {
    res.end('Home Page');
  } else if (req.url === '/about') {
    res.end('About Page');
  } else {
    res.statusCode = 404;
    res.end('Not Found');
  }
});

2. 处理 POST 请求数据(收集 body)

js 复制代码
const server = http.createServer((req, res) => {
  if (req.method === 'POST' && req.url === '/data') {
    let body = '';
    req.on('data', chunk => {
      body += chunk;
    });
    req.on('end', () => {
      console.log('Received:', body);
      res.end('Data received');
    });
  } else {
    res.end('Only POST to /data supported');
  }
});

✅ 四、使用 Express 简化开发(推荐)

安装 Express:

bash 复制代码
npm install express

基础使用:

js 复制代码
const express = require('express');
const app = express();

app.use(express.json()); // 支持 JSON 请求体

app.get('/', (req, res) => {
  res.send('Hello Express!');
});

app.post('/data', (req, res) => {
  console.log(req.body);
  res.send('Data received!');
});

app.listen(3000, () => {
  console.log('Express server running at http://localhost:3000');
});

✅ 五、错误处理 & 小技巧

1. 端口占用处理

监听报错:

js 复制代码
server.on('error', (err) => {
  if (err.code === 'EADDRINUSE') {
    console.error('端口已被占用');
  } else {
    console.error('服务器错误:', err);
  }
});

2. 设置跨域(CORS)响应头

js 复制代码
res.setHeader('Access-Control-Allow-Origin', '*');

3. 读取静态文件(搭配 fs)

js 复制代码
const fs = require('fs');
if (req.url === '/index.html') {
  fs.readFile('./index.html', (err, data) => {
    res.setHeader('Content-Type', 'text/html');
    res.end(data);
  });
}

✅ 六、典型应用场景

场景 示例
接收前端表单请求 POST /submit-form
提供前端页面 GET /index.html
API 服务接口 GET /api/list
提供静态资源 GET /images/logo.png
搭配 WebSocket 实现实时通信 配合 ws 模块使用

✅ 七、服务启动后访问方式

本地访问:

复制代码
http://localhost:3000

局域网访问(查看你的局域网 IP):

bash 复制代码
ifconfig | grep inet

✅ 八、总结一句话版本

使用 http.createServer() 快速创建原生服务,复杂逻辑推荐配合 express;Node HTTP 模块轻量强大,适合 API、Mock、调试服务等多种场景。

相关推荐
StevenSurpass1 小时前
智能工厂场景:FastPrintAgent 分布式打印中间件落地应用方案
分布式·mqtt·http·中间件·打印·fastreport
wixzjsh9 小时前
TCP通信与HTTP协议学习笔记:粘包、三次握手、四次挥手与C/S、B/S模型
学习·tcp/ip·http
一直C9 小时前
Linux网络编程|HTTP协议详解(报文、请求方法、状态码)
linux·http·wireshark·vim·visual studio
鲨鱼辣钊10 小时前
FastAPI进阶_Day21_WebSocket实时通讯实战
websocket·网络协议·fastapi
小婉13 小时前
我用 Next.js + React Flow 从零搭建了一个可视化 AI 工作流编排平台
前端·人工智能·node.js
2501_9151063213 小时前
安卓抓包软件2026,免证书抓包 应用层抓包 代理抓包全解析
网络协议·计算机网络·网络安全·ios·adb·https·udp
Neighbor_OldY14 小时前
云上VPC流日志与网络流量安全分析实战:异常流量、横向移动、C2外连与恶意IP的发现与处置
网络协议·tcp/ip·安全
上海云盾-小余15 小时前
分层防护思路:WAF 应用防护与 TCP 底层防护如何协同
网络·网络协议·tcp/ip
H_oRIZoN_16 小时前
Linux入门DAY35(TCP粘包问题与HTTP)
linux·tcp/ip·http
IPdodo_17 小时前
静态 IP 访问异常排查:403/429 归因与迁移验收
服务器·网络·数据库·python·网络协议·php·性能测试