用Node.js打造你的第一个REST API

184 阅读2分钟

📌 写在开头

本篇结合笔者学习资料与实战经验,带你系统掌握RESTful API的核心概念、设计规范与实现方法。通过一个完整的Todo应用API示例,进一步掌握URI设计到状态码处理,文末附赠参考文章RESTful架构详解拓展知识边界~ 🌟


🌐 什么是RESTful API?

REST(表现层状态转移) 是一种软件架构风格,不是标准,但广泛用于设计网络API。其核心特点:

  • 资源为中心:万物皆资源,用URI唯一标识(如/todos/123
  • 统一接口:通过HTTP方法(GET/POST/PUT/DELETE)操作资源
  • 无状态:每次请求独立,服务器不保存客户端状态
  • 可缓存:提升性能,减少重复请求
  • 分层系统:支持代理、缓存等中间层
  • 按需代码:动态扩展客户端功能(如JavaScript)

assets_task_01jtz5dap2ewzb48ggrfphgxxy_1746950149_src_0.png

(更多架构细节可参考:RESTful架构详解


🔧 RESTful设计规范

1️⃣ URI设计规则

  • 格式scheme://host:port/path?query#fragment
    • 示例:http://api.example.com/v1/todos?page=2
  • 规范
    • 全小写,用连字符-而非下划线_
    • 层级用/分隔,避免过深(如/v1/users/123/orders
    • 资源名用复数(如/todos而非/todo
    • 禁用动词,用HTTP方法表示动作
    • 结尾不加/

2️⃣ HTTP方法语义化

方法作用示例
GET获取资源GET /todos
POST新增资源POST /todos
PUT更新整个资源PUT /todos/123
DELETE删除资源DELETE /todos/123

💻 实战:用Node.js实现Todo API

步骤1:初始化项目

mkdir rest-api && cd rest-api
npm init -y
npm install express

步骤2:编写核心代码

const express = require('express');
const app = express();
app.use(express.json());

let todos = [
  { id: 1, title: "Learn JavaScript", done: false }
];

// 获取所有Todo
app.get('/todos', (req, res) => {
  res.status(200).json(todos);
});

// 新增Todo
app.post('/todos', (req, res) => {
  const newTodo = { id: Date.now(), ...req.body };
  todos.push(newTodo);
  res.status(201).json(newTodo);
});

// 其他PUT、DELETE方法类似,完整代码见参考文章

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

步骤3:测试API

  • 获取所有Todo
    curl http://localhost:3000/todos
    
  • 创建新Todo
    curl -X POST -H "Content-Type: application/json" \
    -d '{"title":"Build REST API"}' http://localhost:3000/todos
    

💡 提示:更多RESTful设计细节,推荐阅读以下资源: