1. app.get('/', function(req, res){
这是告诉快递为请求听/
和运行功能,当它看到一个。
第一个参数是要匹配的模式。有时候像'/'
或'/privacy'
这样的字面的URL片段,你也可以做如下所示的替换。如果需要,您还可以匹配正则表达式here。
Express的所有内部零件都遵循function(req, res, next)
模式。传入的请求从中间件链的顶部开始(例如bodyParser
)并传递,直到某个事件发送响应,或者直到链和404的末尾。
您通常会将app.router
放在链条的底部。一旦Express到达那里,它开始按照它们设置的顺序,将请求与所有的app.get('path'...
,app.post('path'...
等进行匹配。
变量替换:
// this would match:
// /questions/18087696/express-framework-app-post-and-app-get
app.get('/questions/:id/:slug', function(req, res, next){
db.fetch(req.params.id, function(err, question){
console.log('Fetched question: '+req.params.slug');
res.locals.question = question;
res.render('question-view');
});
});
next()
:
如果你定义了处理功能function(req, res, next){}
你可以打电话next()
屈服,将请求传递回中间件链。你可以这样做,例如一个包罗万象的路线:
app.all('*', function(req, res, next){
if(req.secure !== true) {
res.redirect('https://'+req.host+req.originalUrl);
} else {
next();
};
});
同样,为了事情,你必须,如果你想它的运行之前把这个高于其它路由功能。
我以前没有发布json,但是@ PeterLyon的解决方案对我来说看起来很好。
这个语法是我描述的中间件链的另一个例子! 'express.bodyParser()'返回一些带有'function(req,res,next)'函数的函数,一旦将json解析为'req.body'对象,就会内部调用'next()'。 Express然后将请求传递给中间件链,传递给app.post('/ yourPath',...)'这是Peter在上面写的函数的THIRD参数。 – Plato
Oi,试图在express文档中找到'app.get'!感谢“app.VERB”评论。 – FriendlyGuy