Appearance
Express基础概念
Express是Node.js最流行的Web应用框架,它提供了一个简单而强大的API来构建Web和移动应用后端。理解Express的基础概念是掌握这个框架的关键。
Express应用对象
Express应用对象(app)代表一个Web应用,用于处理请求和定义路由。通过调用Express函数来创建:
javascript
const express = require('express');
const app = express();
主要方法
app.METHOD()- 定义HTTP请求处理程序app.use()- 定义中间件app.listen()- 启动服务器监听连接
请求对象(req)
请求对象(req)代表HTTP请求,包含请求的查询字符串、参数、body、HTTP头等信息。
常用属性
req.params- 路由参数req.query- 查询参数req.body- 请求体(需要中间件)req.headers- HTTP头信息req.method- HTTP方法req.path- 请求路径req.protocol- 请求协议req.ip- 客户端IP地址
示例
javascript
app.get('/users/:id', (req, res) => {
console.log(req.params.id); // 路由参数
console.log(req.query.page); // 查询参数
console.log(req.headers['user-agent']); // HTTP头
});
响应对象(res)
响应对象(res)表示HTTP响应,Express应用在处理请求时发送给客户端。
常用方法
res.send()- 发送响应res.json()- 发送JSON响应res.render()- 渲染视图模板res.redirect()- 重定向请求res.status()- 设置状态码res.set()- 设置响应头
示例
javascript
app.get('/users/:id', (req, res) => {
res
.status(200)
.set('Content-Type', 'application/json')
.json({ id: req.params.id, name: 'User Name' });
});
路由(Routing)
路由定义了应用如何响应客户端请求,包括HTTP请求方法和URL路径。
路由结构
app.METHOD(PATH, HANDLER)
- METHOD: HTTP请求方法(get, post, put, delete等)
- PATH: 路径或端点
- HANDLER: 处理请求的函数
示例
javascript
app.get('/', (req, res) => {
res.send('GET request to homepage');
});
app.post('/users', (req, res) => {
res.send('POST request to create user');
});
中间件(Middleware)
中间件函数能够访问请求对象(req)、响应对象(res)和next函数。
中间件类型
- 应用级中间件 - 使用app.use()或app.METHOD()
- 路由级中间件 - 类似应用级,但绑定到express.Router()实例
- 错误处理中间件 - 有4个参数的函数
- 内置中间件 - 如express.static()
- 第三方中间件 - 如body-parser、cookie-parser
中间件示例
javascript
// 简单日志中间件
const logger = (req, res, next) => {
console.log(`${new Date().toISOString()} - ${req.method} ${req.path}`);
next();
};
app.use(logger);
// 路径特定中间件
app.use('/api', (req, res, next) => {
console.log('API-specific middleware');
next();
});
应用设置
使用app.set()设置应用配置:
javascript
app.set('port', process.env.PORT || 3000);
app.set('view engine', 'ejs'); // 设置模板引擎
app.set('views', './views'); // 设置视图目录
HTTP方法
Express支持所有HTTP方法:
- GET
- POST
- PUT
- DELETE
- PATCH
- HEAD
- OPTIONS
状态码
Express支持所有HTTP状态码,常用状态码:
- 200 - OK
- 201 - Created
- 400 - Bad Request
- 401 - Unauthorized
- 403 - Forbidden
- 404 - Not Found
- 500 - Internal Server Error
模板引擎
Express支持多种模板引擎:
javascript
app.set('view engine', 'ejs'); // EJS
// app.set('view engine', 'pug'); // Pug
// app.set('view engine', 'hbs'); // Handlebars
错误处理
Express有内置错误处理机制:
javascript
// 错误处理中间件
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Something broke!');
});
静态文件
使用内置中间件提供静态文件:
javascript
app.use(express.static('public'));
路由参数
路由参数用于捕获URL路径中指定的值:
javascript
app.get('/users/:userId/books/:bookId', (req, res) => {
res.send(`User: ${req.params.userId}, Book: ${req.params.bookId}`);
});
查询参数
查询参数从URL查询字符串中获取:
javascript
// GET /search?q=express&category=framework
app.get('/search', (req, res) => {
const query = req.query.q;
const category = req.query.category;
res.json({ query, category });
});
框架设计理念
Express遵循以下设计理念:
- 极简主义 - 核心功能简单,通过中间件扩展
- 中间件链 - 请求处理通过中间件链
- 路由灵活性 - 支持多种路由模式
- 非阻塞I/O - 基于Node.js的异步特性
这些基础概念为深入学习Express提供了坚实的基础,后续章节将详细介绍每个概念的实际应用。