如何在30分钟内用JavaScript编写REST API:面向初学者

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

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

开始课程

引言:REST API其实很简单

REST API(表述性状态转移)是互联网上不同程序之间通信的“语言”。如果你希望你的Web应用能够向其他应用(例如移动客户端或基于React的前端)提供数据,那么你需要一个API。今天,我们将在30分钟内用JavaScript(Node.js)从零开始编写一个API。

我们将使用最流行的库——Express。它简单、灵活,非常适合初学者。到文章结束时,你将拥有一个包含四种基本CRUD操作(创建、读取、更新、删除)的工作服务器。开始吧!



步骤1:准备环境并安装Express

在编写代码之前,请确保你已经安装了Node.js。可以在终端中检查:

node -vnpm -v

如果显示了版本号,说明一切就绪。如果没有,请从官方网站下载Node.js。

现在,为项目创建一个文件夹并初始化它:

mkdir my-first-apicd my-first-apinpm init -y

package.json文件已创建。安装Express和用于处理UUID(生成唯一ID)的库:

npm install express uuid

完成。创建文件index.js——这将是我们的服务器主文件。



步骤2:创建一个简单的Express服务器

打开index.js并编写服务器的第一个版本:

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

// 解析请求体中的JSONapp.use(express.json());

// 测试路由app.get('/', (req, res) => { res.send('你好,世界!REST API正在运行!');});

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

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

node index.js

打开浏览器并访问http://localhost:3000。如果你看到欢迎消息,说明一切正常!

代码解析:express.json()是一个中间件,它会自动将请求中的JSON转换为JavaScript对象。这对于POST和PUT请求是必需的。



步骤3:添加数据和CRUD路由

现在是最有趣的部分——创建一个包含数据的数组(在实际项目中你会使用数据库,但为了学习,数组就足够了)。这将是一个书籍列表。

const { v4: uuidv4 } = require('uuid');

// 模拟数据库let books = [];

// 创建书籍(POST)app.post('/api/books', (req, res) => { const { title, author } = req.body; if (!title || !author) { return res.status(400).json({ error: '需要提供title和author' }); } const newBook = { id: uuidv4(), title, author }; books.push(newBook); res.status(201).json(newBook);});

// 获取所有书籍(GET)app.get('/api/books', (req, res) => { res.json(books);});

// 根据ID获取单本书籍(GET)app.get('/api/books/:id', (req, res) => { const book = books.find(b => b.id === req.params.id); if (!book) { return res.status(404).json({ error: '未找到书籍' }); } res.json(book);});

// 更新书籍(PUT)app.put('/api/books/:id', (req, res) => { const book = books.find(b => b.id === req.params.id); if (!book) { return res.status(404).json({ error: '未找到书籍' }); } const { title, author } = req.body; if (title) book.title = title; if (author) book.author = author; res.json(book);});

// 删除书籍(DELETE)app.delete('/api/books/:id', (req, res) => { const index = books.findIndex(b => b.id === req.params.id); if (index === -1) { return res.status(404).json({ error: '未找到书籍' }); } books.splice(index, 1); res.status(204

博客

书籍推荐