Express.js 框架详解
简介
Express 是 Node.js 最流行的 Web 框架,提供了路由、中间件等核心能力。
npm install express
快速开始
const express = require('express');
const app = express();
app.get('/', (req, res) => res.json({ message: 'Hello' }));
app.listen(3000);
路由系统
基本路由与参数
app.get('/users', getUsers);
app.post('/users', createUser);
app.get('/users/:id', (req, res) => {
res.json({ id: req.params.id });
});
模块化路由
// routes/users.js
const router = express.Router();
router.get('/', getUsers);
router.post('/', createUser);
module.exports = router;
// app.js
app.use('/api/users', usersRouter);
中间件
内置中间件
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(express.static('public'));
自定义中间件
// 日志中间件
app.use((req, res, next) => {
console.log(`${req.method} ${req.url}`);
next();
});
// 错误处理中间件
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).json({ error: err.message });
});
RESTful API 示例
const express = require('express');
const app = express();
app.use(express.json());
let articles = [];
app.get('/api/articles', (req, res) => res.json(articles));
app.post('/api/articles', (req, res) => {
const article = { id: Date.now(), ...req.body };
articles.push(article);
res.status(201).json(article);
});
app.put('/api/articles/:id', (req, res) => {
const idx = articles.findIndex(a => a.id == req.params.id);
if (idx === -1) return res.status(404).json({ error: 'Not Found' });
articles[idx] = { ...articles[idx], ...req.body };
res.json(articles[idx]);
});
app.delete('/api/articles/:id', (req, res) => {
articles = articles.filter(a => a.id != req.params.id);
res.status(204).end();
});