如何在30分钟内用JavaScript编写REST API

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

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

开始课程

简介:JavaScript 中的 REST API — 快速且简单

现代 Web 开发离不开 API。REST(表述性状态转移)是创建 Web 服务最流行的架构风格。如果你想快速为你的应用构建后端,或者学习服务端开发的基础知识,Node.js 和 Express 是理想的选择。

在本文中,我们将在 30 分钟内用 JavaScript 编写一个完整的 REST API。你将学习如何设置服务器、组织路由、实现 CRUD 操作(创建、读取、更新、删除)以及使用 Postman 测试 API。没有多余的理论 — 只有实践。开始吧!



1. 环境设置和依赖安装

在编写代码之前,请确保你的计算机上已安装 Node.js(版本 14 或更高)。你可以使用以下命令进行检查:

node -vnpm -v

为项目创建一个新文件夹并初始化 package.json:

mkdir my-rest-apicd my-rest-apinpm init -y

现在让我们安装 Express——一个用于 Node.js 的最小且灵活的框架。同时安装 body-parser 用于处理 JSON 请求(在现代版本的 Express 中它是内置的,但为了清晰起见,我们将明确添加它):

npm install express body-parser

项目结构将很简单:

  • app.js — 主服务器文件
  • routes/ — 包含路由的文件夹
  • data/ — 包含测试数据的文件夹(数据库模拟)


2. 使用 Express 创建基本服务器

创建文件 app.js 并编写以下代码:

const express = require('express');const bodyParser = require('body-parser');const app = express();const PORT = 3000;

// 用于处理 JSON 的中间件app.use(bodyParser.json());

// 简单的测试路由app.get('/', (req, res) => { res.send('REST API is working!');});

// 启动服务器app.listen(PORT, () => { console.log(`Server running at http://localhost:${PORT}`);});

使用命令 node app.js 启动服务器,然后在浏览器中打开 http://localhost:3000。你应该会看到消息 "REST API is working!"。恭喜,你刚刚在 Node.js 上创建了你的第一个 Web 服务器!

注意:body-parser 将传入的数据转换为 JSON 格式,这对于 POST 和 PUT 请求是必需的。



3. 组织路由和 CRUD 操作

现在让我们添加真实数据。创建一个 data 文件夹,并在其中创建一个文件 items.js,包含一个测试数组:

const items = [    { id: 1, name: 'Learn Node.js', completed: false },    { id: 2, name: 'Write API', completed: true },    { id: 3, name: 'Publish article', completed: false }];

module.exports = items;

创建一个 routes 文件夹,并在其中创建一个文件 items.js。在这里,我们将描述所有用于处理任务(待办事项列表)的路由:

const express = require('express');const router = express.Router();let items = require('../data/items');

// GET /api/items — 获取所有项目router.get('/', (req, res) => { res.json(items);});

// GET /api/items/:id — 根据 ID 获取项目router.get('/:id', (req, res) => { const id = parseInt(req.params.id); const item = items.find(i => i.id === id); if (!item) return res.status(404).json({ message: 'Item not found' }); res.json(item);});

// POST /api/items — 创建新项目router.post('/', (req, res) => { const newItem = { id: items.length + 1, name: req.body.name, completed: req.body.completed || false }; items.push(newItem); res.status(201).json(newItem);});

// PUT /api/items/:id — 更新一个项目router.put('/:i

博客

书籍推荐