第六章:Express框架实战
6.1 Express基础
npm init -y
npm install express
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello, Express!');
});
app.listen(3000, () => {
console.log('服务器运行在 http://localhost:3000');
});
6.2 路由
const express = require('express');
const app = express();
// GET请求
app.get('/users', (req, res) => {
res.send('获取用户列表');
});
// POST请求
app.post('/users', (req, res) => {
res.send('创建用户');
});
// 带参数
app.get('/users/:id', (req, res) => {
res.send(`用户ID: ${req.params.id}`);
});
// 查询参数
app.get('/search', (req, res) => {
res.send(`搜索: ${req.query.q}`);
});
app.listen(3000);
6.3 中间件
const express = require('express');
const app = express();
// 日志中间件
app.use((req, res, next) => {
console.log(`${req.method} ${req.url}`);
next();
});
// 解析JSON
app.use(express.json());
// 静态文件
app.use(express.static('public'));
// 路由
app.get('/', (req, res) => {
res.send('Hello');
});
// 错误处理
app.use((err, req, res, next) => {
console.error(err);
res.status(500).send('Server Error');
});
app.listen(3000);
6.4 路由模块化
// routes/users.js
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.json({ users: [] });
});
router.get('/:id', (req, res) => {
res.json({ user: { id: req.params.id } });
});
router.post('/', (req, res) => {
res.status(201).json({ message: 'Created' });
});
module.exports = router;
// app.js
const express = require('express');
const app = express();
const usersRouter = require('./routes/users');
app.use('/api/users', usersRouter);
app.listen(3000);
6.5 文件上传
const express = require('express');
const multer = require('multer');
const app = express();
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, 'uploads/');
},
filename: (req, file, cb) => {
cb(null, Date.now() + '-' + file.originalname);
}
});
const upload = multer({ storage });
app.post('/upload', upload.single('file'), (req, res) => {
res.json({ file: req.file });
});
app.listen(3000);