一、初识express
Express是一个基于Node.js的Web应用程序框架,它提供了一套简洁而强大的API,用于构建Web和移动应用程序。Express通过简化Web和移动应用程序的开发,使得能够专注于业务逻辑的实现,而不是繁琐的底层细节。它支持各种HTTP请求方法,如GET、POST、PUT、DELETE等,非常适合用于构建RESTful API。
//导入express
const express = require('express')
//创建web服务器
const app = express()
//启动web服务器
app.listen(80, () => {
console.log('web服务器启动成功,http://localhost')
})
二、express中的路由
在Web开发中,路由是指根据URL将请求转发到正确的处理器的方法。在Node.js和Express中,路由用于确定对于特定的HTTP请求方法和路径,应该调用哪个服务器端函数。
const express = require('express');
const app = express();
app.get('/api/data', (req, res) => {
res.send('Hello, this is data!');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
以上方式中只是创建了一个简单的路由,在做项目中其实这种创建方式有很大的弊端,后续维护起来会超级麻烦,所以我们一般要设计成模块化。通常的做法是将所有涉及到路由的服务器函数放置在一个名为router.js的文件中,使用module.exports导出路由,
// 引入express模块
const express = require('express');
// 创建路由
const router = express.Router()
//挂在路由
router.get('/user', (req, res) => {
res.send('Hello World!')
})
router.post('/add',(req, res)=> {
res.send('Got a POST request')
})
// 导出路由
module.exports = router
再在创建服务器的文件中导入路由即可。
//导入express
const express = require('express')
//创建web服务器
const app = express()
//导入路由模块
const router = require('./router')
//注册路由--不加前缀
// app.use(router)
//为路由模块添加前缀
app.use('/api', router)
//启动web服务器
app.listen(80, () => {
console.log('web服务器启动成功,http://localhost')
})
三、中间件
中间件是Express框架中的一个核心概念,它允许开发者在请求处理流程中的不同阶段插入自定义的逻辑。中间件本质上是一个函数,它接收请求对象(req)、响应对象(res)以及一个名为next的函数作为参数。通过调用next函数,可以将控制权传递给下一个中间件或路由处理函数。
中间件在Express中扮演着至关重要的角色,它可以执行各种任务,如身份验证、日志记录、错误处理、参数解析、CORS设置等。中间件可以分为全局中间件和局部中间件:
1.全局中间件
在应用程序中全局生效,所有请求都会经过该中间件。通常用于一些通用的处理逻辑,如解析请求体、处理静态文件等。
// 全局解析JSON请求体
app.use(express.json());
2.局部中间件
只作用于特定的路由或请求。适用于那些只针对部分路由进行的处理逻辑。
// 局部中间件函数
const checkAuth = (req, res, next) => {
const auth = req.headers.authorization;
if (auth === 'secret-token') {
next(); // 如果验证通过,继续处理下一个中间件或路由
} else {
res.status(403).send('Forbidden'); // 否则返回403
}
};
// 在特定路由中使用局部中间件
app.get('/protected', checkAuth, (req, res) => {
res.send('This is a protected route');
});