使用 Node.js 和 Express 构建 RESTful API
Node.js 是一个基于 Chrome V8 JavaScript 引擎的 JavaScript 运行环境,它使开发者可以使用 JavaScript 来编写服务器端的应用程序。Express 是一个基于 Node.js 的轻量级 Web 应用框架,常被认为是构建 API 或 Web 应用的标准库之一。在本文中,我们将使用 Node.js 和 Express 构建一个简单的 RESTful API,用于管理一个书籍列表。
1. 环境准备
首先,确保你的开发环境中已经安装了 Node.js。接下来,我们需要创建一个新的 Node.js 项目。
打开终端或命令提示符,执行以下命令来创建一个新的 Node.js 项目:
mkdir book-api
cd book-api
npm init -y2. 安装必要的包
我们需要安装 Express 和一些其他的 npm 包来帮助我们构建 API。
npm install express body-parser corsbody-parser 用于解析请求体,cors 用于处理跨域资源共享(CORS)问题。
3. 创建 API
创建一个名为 server.js 的文件,这是我们的主应用程序文件。
server.js 文件内容:
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');const app = express();
app.use(bodyParser.json());
app.use(cors());let books = [{id: 1, title: 'Node.js入门', author: '张三' },{id: 2, title: 'Express实战', author: '李四' },
];// 获取所有书籍
app.get('/api/books', (req, res) => {res.json(books);
});// 添加书籍
app.post('/api/books', (req, res) => {const book = req.body;book.id = books.length + 1;books.push(book);res.status(201).json(book);
});// 删除书籍
app.delete('/api/books/:id', (req, res) => {const id = parseInt(req.params.id);books = books.filter(book => book.id !== id);res.status(204).send();
});// 更新书籍信息
app.put('/api/books/:id', (req, res) => {const id = parseInt(req.params.id);const updatedBook = req.body;books = books.map(book => (book.id === id ? {...book, ...updatedBook } : book));res.json(books.find(book => book.id === id));
});// 启动服务器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server is running on port ${PORT}`));4. 测试 API
现在我们可以启动我们的服务器,并使用 Postman 或其他 HTTP 客户端工具来测试我们的 API。
启动服务器:
node server.js在浏览器中访问 http://localhost:3000/api/books,你应该可以看到 JSON 格式的书籍列表。
5. 使用 Postman 测试 API
安装并打开 Postman,创建一个新的请求:
- GET 请求到 http://localhost:3000/api/books,应该返回所有的书籍。
- POST 请求到 http://localhost:3000/api/books,发送一个 JSON 格式的请求体,例如{ "title": "JavaScript高级程序设计", "author": "高程" },应该返回新添加的书籍。
- DELETE 请求到 http://localhost:3000/api/books/2,应该返回一个空响应体,表示书籍已被成功删除。
- PUT 请求到 http://localhost:3000/api/books/1,发送一个 JSON 格式的请求体,例如{ "title": "Node.js实战" },应该返回更新后的书籍。
