Express中app.use中间件的用法-匹配所有的请求方式

场景

Node的Web应用框架Express的简介与搭建HelloWorld:

Node的Web应用框架Express的简介与搭建HelloWorld_霸道流氓气质的博客-CSDN博客

Express的基本路由实现对get和post等的请求和响应:

Express的基本路由实现对get和post等的请求和响应_霸道流氓气质的博客-CSDN博客

注:

博客:
霸道流氓气质的博客_CSDN博客-C#,架构之路,SpringBoot领域博主
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

app.use中间件的用法

app.use匹配所有的请求方式,可以直接传入请求处理函数,代表接收所有的请求。

因为请求的路由是有顺序的,所以app.use要放在最前面,接收到所有请求后,然后通过next进行下一个路由的匹配

app.use((req,res,next)=>{
 console.log('app.use ');
 next()
})

然后在浏览器中访问不存在的路由

http://localhost:3000/badao

可以看到输出的信息,确实走了app.use

也可以指定路由

app.use((req,res,next)=>{
 console.log('app.use ');
 next()
})

app.use('/request',(req,res,next)=>{
 console.log('app.use /request');
 next()
})

这时通过浏览器访问

http://localhost:3000/request

可以看到先走了app.use最上面的,然后又走了带/request的

为了再次验证可以给/request匹配一个路由

app.use((req,res,next)=>{
 console.log('app.use ');
 next()
})

app.use('/request',(req,res,next)=>{
 console.log('app.use /request');
 next()
})

app.get('/request', function (req, res) {
  res.send('request --get')
})

打开浏览器输入

http://localhost:3000/request

可以看到从上往下依次匹配了三次路由

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 使用异步函数是不会逃脱 express app.use 函数的捕获错误机制的。 在 express app.use 函数用于添加中间件函数,这些函数会在请求和响应的生命周期被调用。如果在这些函数抛出了错误,那么 express 会捕获这个错误并将其传递给错误处理中间件。 因此,无论是同步函数还是异步函数,都不会逃脱 express app.use 函数的捕获错误机制。如果你在 app.use 函数使用了异步函数,那么只需要在函数内部使用 try-catch 语句或者在函数最后使用 await 来捕获并处理异步操作可能出现的错误即可。 ### 回答2: 在Express,通过app.use函数注册的中间件会自动捕获发生在其内部的同步错误,并通过next函数将错误传递给错误处理中间件进行处理。这种错误捕获机制可以有效地处理同步错误。然而,对于异步函数,Express的错误处理机制是无法自动捕获并处理的。 使用异步函数时,如果在异步函数内部发生错误,Express的错误处理机制将无法捕获到这些错误,也无法进行相应的处理。这是因为异步函数的执行是非阻塞的,它们会立即返回一个Promise对象,并在后台执行。在这种情况下,错误发生在异步函数内部,而Express的错误处理机制在异步函数返回Promise对象后已经无法获取到这些错误。 为了解决这个问题,我们可以使用try/catch语句来捕获异步函数内部的错误,并手动调用next函数传递错误。这样,错误将被传递到下一个错误处理中间件进行处理。 示例代码如下: app.use(async (req, res, next) => { try { // 异步操作 await someAsyncFunction(); next(); } catch (err) { next(err); } }); 上述代码,我们使用了async/await语法来处理异步函数,然后在try块执行异步操作,如果发生错误,则通过next函数将错误传递给下一个错误处理中间件进行处理。 综上所述,使用异步函数时,需要手动处理其发生的错误,通过try/catch语句捕获错误并调用next函数传递错误,以便Express能够正确地处理它们。 ### 回答3: 使用异步函数不会逃脱express`app.use`函数的捕获错误的机制。 在Express,通过定义中间件函数来处理HTTP请求,这些中间件函数可以是同步的,也可以是异步的。无论是同步还是异步的中间件函数,Express都会在调用它们时使用try-catch块来捕获可能出现的错误。 在异步函数,当出现错误时,如果没有使用try-catch语句来显式地捕获错误,这些错误将会被自动转发到错误处理中间件。错误处理中间件是一个专门用来处理错误的中间件函数,可以用`app.use`或`app.use(errorHandler)`方式来定义。因此,无论是同步的还是异步的函数,只要在处理请求的过程出现错误,Express都会通过错误处理中间件来捕获和处理这些错误。 例如,下面是一个使用异步函数的Express中间件的示例: ``` app.use(async (req, res, next) => { try { // 异步操作 await someAsyncFunction(); // 继续处理请求 next(); } catch (err) { // 错误处理 next(err); } }); ``` 在上述示例,`someAsyncFunction`是一个异步函数,当它抛出一个错误时,try-catch块会捕获这个错误并通过`next(err)`将其传递给错误处理中间件进行处理。 总之,无论使用同步还是异步函数,Express都会捕获这些函数可能抛出的错误,并通过错误处理中间件来处理这些错误,使得我们能够更好地处理和管理错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霸道流氓气质

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值