express的新开发人员往往对路由处理程序和中间件之间的区别感到困惑。因此他们也对app.use(),app.all(),app.get(),app.post(),app.delete()和app.put()方法的区别感到困惑。
在本文中,我将解释中间件和路由处理程序之间的区别。以及如何正确使用app.use(),app.all(),app.get(),app.post(),app.delete()和app.put()方法。
路由处理
app.use(),app.all(),app.get(),app.post(),app.delete()和app.put()全部是用来定义路由的。这些方法都用于定义路由。路由用于处理HTTP请求。路由是路径和回调的组合,在请求的路径匹配时执行。回调被称为路由处理程序。
它们之间的区别是处理不同类型的HTTP请求。例如: app.get()方法仅仅处理get请求,而app.all()处理GET、POST等请求。
下面是一个例子,如何定义一个路由:
var app = require("express")();app.get("/", function(req, res, next){ res.send("Hello World!!!!");});app.listen(8080);
每个路由处理程序都获得对当前正在提供的HTTP请求的请求和响应对象的引用。
可以为单个HTTP请求执行多个路由处理程序。这是一个例子:
var app = require("express")();app.get("/", function(req, res, next){ res.write("Hello"); next();});app.get("/", function(req, res, next){ res.write(" World !!!"); res.end();});app.listen(8080);
这里第一个句柄写入一些响应,然后调用next()。 next()方法用于调用与路径路径匹配的下一个路由处理程序。
路由处理程序必须结束请求或调用下一个路由处理程序。
我们还可以将多个路由处理程序传递给app.all(),app.get(),app.post(),app.delete()和app.put()方法。
这是一个证明这一点的例子:
var app = require("express")();app.get("/", function(req, res, next){ res.write("Hello"); next();}, function(req, res, next){ res.write(" World !!!"); res.end();});app.listen(8080);
中间件
中间件是一个位于实际请求处理程序之上的回调。它采用与路由处理程序相同的参数。
要了解中间件,我们来看一个带有dashboard和profile页面的示例站点。要访问这些页面,用户必须登录。还会记录对这些页面的请求。
以下是这些页面的路由处理程序的代码:
var app = require("express")();function checkLogin(){ return false;}function logRequest(){ console.log("New request");}app.get("/dashboard", function(req, res, next){ logRequest(); if(checkLogin()){ res.send("This is the dashboard page"); } else{ res.send("You are not logged in!!!"); }});app.get("/profile", function(req, res, next){ logRequest(); if(checkLogin()){ res.send("This is the dashboard page"); } else{ res.send("You are not logged in!!!"); }});app.listen(8080);
新闻热点
疑难解答
图片精选