express教程
Express是一个基于node.js平台的快速、开放、极简的Web开发框架。它不对Node.js已有的特性进行二次抽象,而是在其基础上扩展了Web应用所需的基本功能。通过Express,开发者可以方便、快速地创建Web网站服务器或API接口服务器。以下是一篇详细的Express教程。
一、安装Express
前提条件:确保已经安装了Node.js和npm(Node包管理器)。
安装Express: 可以使用npm命令来安装Express。在项目目录下,运行以下命令:
npm install express --save
或者简写为:
npm i -S express
二、创建基本的Web服务器
引入Express: 创建一个JavaScript文件(如
server.js
),并在其中引入Express模块:const express = require('express');
创建服务器应用程序: 使用Express创建一个服务器实例:
const app = express();
定义路由: 使用
app.get()
方法定义GET请求的路由处理函数。例如,监听根路径/
的GET请求:app.get('/', function(req, res) { res.send('Hello World'); });
启动服务器: 使用
app.listen()
方法启动服务器,并监听指定的端口(如3000):app.listen(3000, function() { console.log('app is running at port 3000.'); });
访问服务器: 在浏览器中访问
http://localhost:3000/
,应该会看到页面显示“Hello World”。
三、处理不同类型的请求
处理POST请求: 使用
app.post()
方法定义POST请求的路由处理函数。例如:app.post('/submit', function(req, res) { // 处理POST请求的数据 res.send('Request received'); });
获取URL中的查询参数: 通过
req.query
对象访问URL中的查询参数。例如:app.get('/search', function(req, res) { const query = req.query.q; res.send(`Search query: ${query}`); });
获取URL中的动态参数: 使用
:
匹配URL中的动态参数。例如:app.get('/user/:id', function(req, res) { const userId = req.params.id; res.send(`User ID: ${userId}`); });
四、托管静态资源
- **使用
express.static()
**: Express提供了一个express.static()
中间件函数,用于托管静态资源(如图片、CSS文件、JavaScript文件等)。例如:
这样,app.use(express.static('public'));
public
目录下的文件就可以通过http://localhost:3000/文件名
的方式访问了。
五、中间件
理解中间件: 中间件是请求处理管道中的函数,可以访问请求对象(
req
)、响应对象(res
)和管道中的下一个中间件函数(next
)。定义中间件: 使用
app.use()
方法定义全局中间件,使用路由对象的use()
方法定义局部中间件。例如:app.use(function(req, res, next) { console.log('Request received'); next(); });
使用第三方中间件: 可以通过npm安装并使用第三方中间件,如
body-parser
用于解析请求体中的JSON或URL编码的数据。
六、路由机制
定义路由: 路由是由一个URI、HTTP请求方法(如GET、POST等)和若干个处理函数组成的。在Express中,可以使用
app.METHOD(path, handler)
的形式定义路由。路由参数: 除了URL中的查询参数和动态参数外,还可以使用正则表达式匹配路由路径。
七、连接数据库
安装数据库驱动: 根据所使用的数据库类型(如MySQL、MongoDB等),安装相应的Node.js驱动。
建立数据库连接: 在应用程序中创建数据库连接文件,并在需要时引入和使用。
操作数据库: 在路由处理函数中执行数据库查询或更新操作,并将结果返回给客户端。
八、综合案例
以下是一个综合案例,展示了如何使用Express创建一个简单的用户管理系统:
const express = require('express');
const mysql = require('mysql');
const bodyParser = require('body-parser');
const app = express();
const port = 3000;
// 配置body-parser中间件
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
// 配置数据库连接
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'test'
});
connection.connect();
// 定义用户路由
app.get('/users', (req, res) => {
const { userName } = req.query;
let sql = 'SELECT * FROM users';
if (userName) {
sql += ` WHERE user_name LIKE '%${userName}%'`;
}
connection.query(sql, (error, results) => {
if (error) {
return res.status(500).send({ msg: 'Database error' });
}
res.send(results);
});
});
app.post('/users', (req, res) => {
const { userName, userPhone } = req.body;
const sql = `INSERT INTO users (user_name, user_phone) VALUES ('${userName}', '${userPhone}')`;
connection.query(sql, (error, results) => {
if (error) {
return res.status(500).send({ msg: 'Database error' });
}
res.send({ msg: 'User added successfully' });
});
});
// 启动服务器
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
在这个案例中,我们创建了一个简单的用户管理系统,可以查询和添加用户信息。注意,这里的数据库查询语句是直接拼接的,为了安全起见,建议使用参数化查询或ORM框架来避免SQL注入攻击。
通过以上步骤和案例,你应该已经对Express有了基本的了解,并能够使用它创建简单的Web应用程序。
本文地址:https://www.tides.cn/p_express-tutorial