我试图理解我们什么时候需要在我们的节点 Express中使用app.use
在网上搜索时,我在reddit 上偶然发现了这个答案,说明了app.get 和 app.use之间的区别
基于此,我能够总结出以下几点。
app.use充当超级路由还是中间件?意味着它在下面/之后写的每条路线上都会被调用app.use?
此外,如果有人可以添加有关 app.use 的更多信息/实践,我将不胜感激。
我试图理解我们什么时候需要在我们的节点 Express中使用app.use
在网上搜索时,我在reddit 上偶然发现了这个答案,说明了app.get 和 app.use之间的区别
基于此,我能够总结出以下几点。
app.use充当超级路由还是中间件?意味着它在下面/之后写的每条路线上都会被调用app.use?
此外,如果有人可以添加有关 app.use 的更多信息/实践,我将不胜感激。
将 ExpressJS 与 NodeJS 一起使用时,您可以使用app.get和app.use用于几个有用的方面。
初始化您的 App 后let app = express();,您可以在下面找到一些示例:
正如您正确指出的那样,它对“中间件”很有用,它将适用于您指明后记的所有 GET、POST 等。例如,您只能在想要“使用用户/通过身份验证”的 GET 之前使用中间件。
指示静态内容的文件夹:app.use(express.static(__dirname + "/public"));
包括 JSON 内容的解析器:app.use(bodyParser.json());
定义“Cookie Parser”签名字符串:app.use(cookieParser("Signing text example"));
不同文件中的 URL 的单独路由器:app.use("/api", apiRouter);或app.use("/news", newsRouter);或app.use("/", siteRouter);
对于自定义错误处理程序:app.use(sites404handler);或app.use(globalErrorHandler);
在谈论时,app.get(...)您是在指示将通过 GET 方法访问哪些 URL。但是您可以在这里使用几个选项:
表明你有一个主页:app.get("/", function(req, res) { res.send("Hello world!"); });
接受 POST 请求:app.post("/", function(req, res) { res.send("Hello world! With POST call."); });
您还可以将其作为“apiRouter.js”分隔在另一个文件中并包含在其中:let router = express.Router(); router.route("/books").get(function(req, res) { res.send("/api/books/ called via a Router"); });
请记住,您也可以选择app.set(...)。例如,这对于定义像 Handlebars(.hbs 文件)这样的视图引擎很有用。
希望这可以帮助!
用于静态路径
//Set static path
app.use(express.static(__dirname + '/public'));
用作路由器
//user
app.use('/', require('./controllers/user'));
用于handline中间件
//Body-parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));// Body parser use JSON data
用于自定义中间件
// force https
app.use ( (req, res, next) =>{
if (req.secure) {
// request was via https, so do no special handling
next();
} else {
// request was via http, so redirect to https
res.redirect('https://' + req.headers.host + req.url);
}
});
app.get路由处理程序适用于 GET 请求,适用于指定路径或所有路径:
使用指定的回调函数将 HTTP GET 请求路由到指定路径。
app.use中间件适用于所有请求,无论是指定路径还是所有路径:
在指定路径挂载指定的中间件函数或函数:当请求路径的基匹配路径时执行中间件函数。
use用于将某些逻辑(中间件)应用于特定路由或整个应用程序,而不管请求方法如何。