当涉及到使用中间件(Middleware)在Express.js中时,中间件函数通常用于处理HTTP请求和响应,以及执行一些在路由处理函数之前或之后的任务。以下是一个简单的Express.js中间件API示例:
首先,确保你已经安装了Express.js。如果没有,你可以使用npm(Node Package Manager)来安装它:
npm install express
然后,你可以创建一个简单的Express应用,并添加一个中间件函数:
// 导入express模块
const express = require('express');
const app = express();
// 定义一个中间件函数
// 这个中间件会打印出请求的方法、URL和请求体(如果有)
const logRequest = (req, res, next) => {
console.log(`Method: ${
req.method}`);
console.log(`URL: ${
req.url}`);
console.log(`Body: ${
JSON.stringify(req.body)}`); // 注意:req.body默认是undefined,需要使用中间件如body-parser来解析
next(); // 调用next()函数将控制权传递给下一个中间件或路由处理函数
};
// 使用body-parser中间件来解析JSON请求体
// 注意:从Express 4.16.0开始,你可以使用内置的express.json()中间件来替代body-parser
// 这里为了示例,我们还是使用body-parser
const bodyParser = require('body-parser');
app.use(bodyParser.json()); // 解析JSON请求体
// 将中间件函数添加到应用上
app.use(logRequest);
// 定义一个路由处理函数
app.get('/', (req, res) => {
res.send('Hello, World!');
});
// 启动服务器,监听3000端口
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
在这个示例中,我们定义了一个名为logRequest
的中间件函数,它会在每个请求到达路由处理函数之前被调用。这个函数简单地打印出请求的方法、URL和请求体(如果有)。然后,它调用next()
函数将控制权传递给下一个中间件或路由处理函数。
我们还使用了body-parser
中间件来解析JSON请求体。从Express 4.16.0开始,你可以使用内置的express.json()
中间件来替代body-parser
。但在这里,为了示例的完整性,我们还是使用了body-parser
。
最后,我们将logRequest
中间件函数添加到应用上,并定义了一个简单的路由处理函数来响应根URL(/
)的请求。然后,我们启动服务器并监听3000端口。当你向服务器发送请求时,你会在控制台上看到由logRequest
中间件打印出的请求信息。