我对express和node.js有点陌生,我搞不清楚app.use和app.get之间的区别。看起来你可以同时使用它们来发送信息。例如:
app.use('/',function(req, res,next) {
res.send('Hello');
next();
});
似乎和这个是一样的:
app.get('/', function (req,res) {
res.send('Hello');
});
我对express和node.js有点陌生,我搞不清楚app.use和app.get之间的区别。看起来你可以同时使用它们来发送信息。例如:
app.use('/',function(req, res,next) {
res.send('Hello');
next();
});
似乎和这个是一样的:
app.get('/', function (req,res) {
res.send('Hello');
});
当前回答
除了以上的解释,我所经历的:
app.use('/book', handler);
将匹配所有以“/book”开头的请求。所以它也匹配" /book/1 "或" /book/2 "
app.get('/book')
只匹配精确匹配的GET请求。它不会处理像'/book/1'或'/book/2'这样的url
所以,如果你想要一个全局处理程序来处理你所有的路由,那么app.use('/')是选项。app.get('/')将只处理根URL。
其他回答
每次请求发送到服务器时,都会调用App.use。 唯一的事情是我们应该在处理get, put, post等请求之前调用它
app.use(middleware);
function middleware(req, res, next)
{
console.log("Came in middleware function without arrow");
next();
}
App.get只对给定路径的get请求被调用。
app.get('/myget', myget_function);
function myget_function(req, res)
{
console.log("Came in function myget");
res.send('Hello World! from myget');
}
post只在给定路径的post请求时被调用。
app.post('/mypost', mypost_function);
function mypost_function(req, res)
{
console.log("Came in function mypost");
res.send('Hello World! from mypost');
}
app.use是Connect (Express所依赖的中间件框架)中的“低级”方法。
以下是我的指导原则:
如果你想公开一个GET方法,请使用app.get。 如果你想添加一些中间件(HTTP请求到达你在Express中设置的路由之前的处理程序),或者如果你想让你的路由模块化(例如,从npm模块中公开一组路由供其他web应用程序使用),请使用app.use。
简单的 app.use表示“在所有请求上运行这个” app.get的意思是“在给定URL的GET请求上运行这个”
除了以上的解释,我所经历的:
app.use('/book', handler);
将匹配所有以“/book”开头的请求。所以它也匹配" /book/1 "或" /book/2 "
app.get('/book')
只匹配精确匹配的GET请求。它不会处理像'/book/1'或'/book/2'这样的url
所以,如果你想要一个全局处理程序来处理你所有的路由,那么app.use('/')是选项。app.get('/')将只处理根URL。
app.get在HTTP方法设置为GET时被调用,而app.use则不管HTTP方法是什么都被调用,因此它定义了一个层,该层位于快速包提供给你访问的所有其他RESTful类型之上。