node 中间件 了解

express中间件模型

在某些场景中,对请求的处理可能会经过多个步骤,比如:日志记录、安全验证、权限验证、业务处理,为了分割这些不同的处理,express提供了中间件的模型

app.use(function(req, res, next){
  console.log("中间件1的处理");
  next(); //交给下一个匹配的中间件
})
// 注意:use中的路径匹配的是基路径,下面的处理函数可以匹配所有以 /news 开头的路径
app.use("/news", function(req, res, next){
  console.log("中间件2的处理");
	next(); //交给下一个中间件
})

app.use("/login", function(req, res){
  console.log("中间件3的处理,不再往后移交");
})

当我们访问/news/123时,请求会依次交给中间件1中间件2

当我们访问/login/xxxx时,请求会依次交给中间件1、`中间件

中间件使用app.use注册即可

常用中间件

express给我们制作了一些常用的中间件,通过注册这些中间件,可以轻松实现一些通用功能

##静态资源服务

// 该函数返回一个中间件
// 它将指定的目录作为静态资源目录
// 当访问服务器时,该中间件会通过 path 对应该目录中的文件
// 如果能够找到文件,则直接响应文件内容,不再向后移交
// 若无法找到文件,向后移交
express.static(dir);

使用示例:
```js
app.use(express.static(path.resolve(__dirname, "public")))

express.urlencoded();
// 该函数返回一个中间件
// 如果它发现请求头中的 content-type 的值是 application/x-www-form-urlencoded
// 则会把请求体中的内容解析为一个对象,保存到 req.body 中,然后向后移交
// 否则,直接向后移交
// 使用配置 {extended: true},避免报出警告
app.use(express.urlencoded({extended: true}));

express.json

express.json();
// 该函数返回一个中间件
// 如果它发现请求头中的 content-type 的值是 application/json
// 则会把请求体中的内容解析为一个对象,保存到 req.body 中,然后向后移交
// 否则,直接向后移交
app.use(express.json());

express.Router

// 该函数返回一个中间件,称之为路由中间件
var router = express.Router();

// 匹配 GET 基路径/
router.get("/", function(req, res){
  
})
// 匹配 GET 基路径/a
router.get("/a", function(req, res){
  
})
// 匹配 POST 基路径/
router.post("/", function(req, res){
  
})
// 当基路径为 /api/user 时,交给该路由处理
// 如果路由没有命中,则它会自动往后移交
app.use("/api/user", router);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值