RESTful API 是一种基于 HTTP 协议的接口设计风格,通过 HTTP 方法(GET、POST、PUT、DELETE 等)对资源进行操作。学习构建 RESTful API 的关键在于理解 HTTP 请求的处理、路由、状态码、请求和响应对象。
在构建 RESTful API 时,处理 HTTP 请求是核心。请求通常包含以下几个部分:
Content-Type
和 Authorization
。路由是将特定的 HTTP 请求映射到处理函数的机制。不同的路径和方法对应不同的操作。
示例:简单的路由
const express = require('express');
const app = express();
app.get('/api/items', (req, res) => {
res.send('获取所有物品');
});
app.post('/api/items', (req, res) => {
res.send('创建一个新物品');
});
app.listen(3000, () => console.log('服务器运行在 http://localhost:3000'));
HTTP 状态码用于表示请求的结果:
示例:返回状态码
app.get('/api/items/:id', (req, res) => {
const item = findItemById(req.params.id);
if (!item) {
return res.status(404).send('物品未找到');
}
res.status(200).json(item);
});
在 Express.js 中,req
对象表示请求,res
对象表示响应。你可以通过 req.body
读取请求体,通过 res.send
、res.json
等方法发送响应。
Express.js 是 Node.js 上最流行的 web 框架,简洁灵活,适合构建 RESTful API。掌握 Express.js 的使用是构建高效 API 的基础。
中间件是 Express.js 中处理请求的核心概念,可以在处理请求前执行一些操作,如解析请求体、验证用户身份等。
示例:使用中间件
const express = require('express');
const app = express();
// 解析 JSON 请求体
app.use(express.json());
// 自定义中间件:记录请求时间
app.use((req, res, next) => {
console.log('请求时间:', new Date());
next();
});
Express.js 的路由系统允许你将不同的路径和方法与处理函数关联。
示例:定义路由
app.get('/api/users', (req, res) => {
res.send('获取用户列表');
});
app.post('/api/users', (req, res) => {
const user = req.body;
// 创建用户逻辑
res.status(201).json(user);
});
你可以将路由分组到一个单独的模块中,方便管理:
// routes/users.js
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => res.send('获取用户列表'));
router.post('/', (req, res) => res.status(201).json(req.body));
module.exports = router;
// 在主文件中使用
const userRoutes = require('./routes/users');
app.use('/api/users', userRoutes);
处理错误是构建稳健 API 的关键。Express 提供了一个统一的错误处理机制,可以捕获所有的错误并返回适当的响应。
示例:全局错误处理
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('服务器内部错误');
});
通过学习如何构建 RESTful API 和掌握 Express.js,你将能够设计和实现高效、可扩展的 API。这些技能在现代 web 开发中至关重要,并且是构建后端服务的重要基础。