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热重载

相关推荐
为爱停留4 分钟前
Spring Boot 应用配置参数化实践:通过 Docker Run 参数传递配置
spring boot·后端·docker
杨杨杨大侠5 分钟前
DeepAgents 框架深度解析:从理论到实践的智能代理架构
后端·python·llm
雪人.5 分钟前
Spring常见面试题(2026版30道面试题)
java·后端·spring
绝美焦栖12 分钟前
低版本pdfjs升级
前端·javascript·vue.js
阿里巴巴终端技术12 分钟前
二十年,重新出发!第 20 届 D2 技术大会「AI 新」议题全球征集正式开启
前端·react.js·html
阿祖zu23 分钟前
2025 AI 总结:技术研发的技能升维与职业路径系统重构的思考
前端·后端·ai编程
IT_陈寒27 分钟前
Vite 5分钟性能优化实战:从3秒到300ms的冷启动提速技巧(附可复用配置)
前端·人工智能·后端
心在飞扬27 分钟前
langchain学习总结-Embedding 学习总结
后端
迦南giser28 分钟前
webpack从0到1详解
前端·javascript·css·webpack·node.js
xkxnq28 分钟前
第二阶段:Vue 组件化开发(第 26天)
前端·javascript·vue.js