如何在30分钟内用JavaScript编写REST API:实用指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

简介:半小时内实现 REST API — 这是真的

REST API 是现代网络交互的基础。无论你是想了解后端的前端开发者,还是想快速创建第一个服务器的新手,本指南都适合你。我们将讲解如何用 JavaScript (Node.js) 在短短 30 分钟内编写一个完整的 REST API。

我们使用最精简的技术栈:Node.js 和 Express.js — 创建 API 最流行的框架。没有多余的代码,只有实践。到文章结束时,你将拥有一个具备 CRUD 操作(创建、读取、更新、删除)的工作服务器。

步骤 1:准备和安装依赖

首先确保你已安装 Node.js(版本 14 或更高)。可以从官方网站下载。检查安装情况:

node -v
npm -v

创建一个项目文件夹并进入:

mkdir my-rest-api
cd my-rest-api

初始化项目并安装 Express:

npm init -y
npm install express

为了方便,安装 nodemon — 它会在代码更改时自动重启服务器:

npm install --save-dev nodemon

现在打开 package.json 并将 "scripts" 部分替换为:

"scripts": {
  "start": "node index.js",
  "dev": "nodemon index.js"
}

太好了!一切准备就绪,可以开始编写代码了。

步骤 2:编写基础服务器和第一个端点

在项目根目录创建文件 index.js。从导入 Express 和设置端口开始:

const express = require('express');
const app = express();
const PORT = 3000;

// 用于解析 JSON 的中间件
app.use(express.json());

// 简单的测试端点
app.get('/', (req, res) => {
  res.send('我的 REST API 正在运行!');
});

// 启动服务器
app.listen(PORT, () => {
  console.log(`服务器已启动,地址为 http://localhost:${PORT}`);
});

使用以下命令启动服务器:

npm run dev

在浏览器中访问 http://localhost:3000 — 你应该会看到消息 "我的 REST API 正在运行!"。

添加模拟数据库

为简单起见,我们将数据存储在内存中(数组)。在实际项目中,你会连接 MongoDB 或 PostgreSQL,但对于学习来说这已经足够了。

// 模拟数据库
let users = [
  { id: 1, name: '阿列克谢', email: 'alex@example.com' },
  { id: 2, name: '玛丽亚', email: 'maria@example.com' }
];
let nextId = 3;

步骤 3:实现 CRUD 操作

现在创建用于操作用户的完整端点。我们将实现四种主要的 HTTP 方法:GET、POST、PUT、DELETE。

GET — 获取所有用户

// 获取所有用户
app.get('/api/users', (req, res) => {
  res.json(users);
});

// 根据 ID 获取用户
app.get('/api/users/:id', (req, res) => {
  const id = parseInt(req.params.id);
  const user = users.find(u => u.id === id);
  
  if (!user) {
    return res.status(404).json({ message: '未找到用户' });
  }
  
  res.json(user);
});

POST — 创建新用户

// 创建用户
app.post('/api/users', (req, res) => {
  const { name, email } = req.body;
  
  // 简单验证
  if (!name || !email) {
    return res.status(400).json({ message: '姓名和电子邮件为必填项' });
  }
  
  const newUser = {
    id: nextId++,
    name,
    email
  };
  
  users.push(newUser);
  res.status(201).json(newUser);
});

PUT — 更新用户

// 更新用户
app.put('/api/users/:id', (req, res) => {
  const id = parseInt(req.params.id);
  const { name, email } = req.bod                

博客

书籍推荐