澄清express.js路由与中间件:详解与使用方法

0 下载量 170 浏览量 更新于2024-08-29 收藏 56KB PDF 举报
在Express.js中,路由处理程序和中间件是两个关键概念,对于新开发者来说,理解它们的区别至关重要。路由处理程序主要用于接收和处理HTTP请求,而中间件则是在请求到达特定路由之前或之后执行的函数,增加了应用程序的灵活性。 路由处理程序是通过`app.get()`, `app.post()`, `app.delete()`, 和 `app.put()`等方法来定义的,这些方法分别对应HTTP方法(GET、POST、DELETE和PUT)。它们结合了路径(路径匹配)和回调函数,当请求的路径与定义的路由匹配时,回调函数(即路由处理程序)会被调用。例如,`app.get("/")`会处理所有发送到根路径(/)的GET请求,并执行相应的回调函数。 中间件则是通过`app.use()`方法添加到应用程序中的,它可以捕获所有请求并执行,不区分HTTP方法。这意味着无论请求是GET、POST还是其他方法,中间件都会被调用。中间件的回调函数通常包含三个参数:请求对象(req)、响应对象(res)和一个可选的next函数。中间件可以在处理请求之前、之后或者遇到错误时执行操作。 以下是一个使用中间件的例子: ```javascript var app = require("express")(); app.use(function(req, res, next) { // 在每个请求开始时执行的代码 console.log('Middleware running...'); next(); // 继续执行下一个路由处理程序 }); app.get("/", function(req, res) { res.send("Hello World"); }); app.listen(8080); ``` 在这个例子中,无论何时有请求到达,中间件首先运行,然后才执行GET路由的处理程序。如果中间件决定不调用`next()`,那么后续的路由处理程序将不会被执行。 同时,多个路由处理程序可以被附加到同一个路径上,如上述的第二个例子所示,这允许顺序执行多个操作。但是,路由处理程序必须在结束请求或调用`next()`后终止,以确保请求流程的正常进行。 总结来说,路由处理程序主要负责特定HTTP请求的逻辑,而中间件提供了通用的功能性处理,可以被应用到任何请求上。理解并熟练运用这两个概念有助于构建更健壮和灵活的Express.js应用程序。