Node.js 第二课:用核心模块构建你的第一个服务器

创建并运行一个真正的Node.js服务器,理解HTTP模块,学会处理请求与响应。

实战项目:简易天气查询API

1. 创建项目结构

bash 复制代码
mkdir server-demo
cd server-demo
npm init -y
npm install nodemon --save-dev

修改 package.json

json 复制代码
{
  "scripts": {
    "dev": "nodemon server.js"
  }
}

2. 核心模块讲解:http

创建 server.js

javascript 复制代码
// 1. 导入内置的http模块
const http = require('http');

// 2. 创建服务器实例
const server = http.createServer((req, res) => {
  // req: 请求对象,包含客户端的信息
  // res: 响应对象,用于向客户端返回数据
  
  console.log(`收到 ${req.method} 请求,路径: ${req.url}`);
  
  // 设置响应头
  res.writeHead(200, { 
    'Content-Type': 'application/json',
    'Access-Control-Allow-Origin': '*'
  });
  
  // 根据请求路径返回不同响应
  if (req.url === '/weather/beijing') {
    res.end(JSON.stringify({
      city: "北京",
      temperature: "22°C",
      condition: "晴天"
    }));
  } else if (req.url === '/weather/shanghai') {
    res.end(JSON.stringify({
      city: "上海",
      temperature: "25°C",
      condition: "多云"
    }));
  } else {
    res.end(JSON.stringify({
      message: "欢迎使用天气API",
      endpoints: ["/weather/beijing", "/weather/shanghai"]
    }));
  }
});

// 3. 监听端口
const PORT = 3000;
server.listen(PORT, () => {
  console.log(`🚀 服务器运行在: http://localhost:${PORT}`);
  console.log(`📡 试试访问: http://localhost:${PORT}/weather/beijing`);
});

3. 运行并测试

bash 复制代码
npm run dev

用三种方式测试:

  1. 浏览器访问 :打开 http://localhost:3000

2 命令行curl

bash 复制代码
curl http://localhost:3000/weather/shanghai
  1. 创建测试文件 test.js
javascript 复制代码
const http = require('http');

const options = {
  hostname: 'localhost',
  port: 3000,
  path: '/weather/beijing',
  method: 'GET'
};

const req = http.request(options, (res) => {
  let data = '';
  
  res.on('data', chunk => {
    data += chunk;
  });
  
  res.on('end', () => {
    console.log('天气数据:', JSON.parse(data));
  });
});

req.end();

知识点总结

✅ 掌握 http.createServer()创建服务器

✅ 理解 reqres对象

✅ 学会设置响应头和状态码

✅ 能根据不同URL返回不同内容

✅ 知道如何用 nodemon热重载

相关推荐
Memory_荒年6 分钟前
Dubbo调优实战:从QPS 1000到10000的惊险过山车之旅
java·后端·dubbo
散步去海边8 分钟前
Pretext 初识——零 DOM 测量的文本布局引擎
前端
Cosolar8 分钟前
别再羡慕 Python 了!Java 开发者的 AI Agent 全指南:四大框架从选型到实战
java·人工智能·后端
来一斤小鲜肉9 分钟前
Spring AI核心:高阶API之Tool Calling
后端·ai编程
糖猫猫_9 分钟前
Kite 实现逻辑删除
后端·github
xw-busy-code11 分钟前
npm 包管理笔记整理
前端·笔记·npm
Memory_荒年20 分钟前
Dubbo高级实战:从“能用”到“好用”的奇技淫巧
java·后端
de_wizard20 分钟前
DeepSeek API 调用 - Spring Boot 实现
windows·spring boot·后端
椰奶燕麦22 分钟前
Ubuntu 设置静态IP
后端
踩着两条虫22 分钟前
AI驱动的Vue3应用开发平台 深入探究(十六):扩展与定制之自定义组件与设计器面板
前端·vue.js·人工智能·开源·ai编程