1.app.get('/', function(req, res){
这是告诉 express 监听请求/
并在看到请求时运行该函数。
第一个参数是要匹配的模式。有时像'/'
or之类的文字 URL 片段'/privacy'
,您也可以进行替换,如下所示。如有必要,您还可以按照此处所述匹配正则表达式。
Express 的所有内部部分都遵循该function(req, res, next)
模式。传入的请求从中间件链的顶部开始(例如bodyParser
)并一直传递,直到有东西发送响应,或者 express 到达链的末端和 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()
yield,将请求传递回中间件链。您可以为例如一条包罗万象的路线执行此操作:
app.all('*', function(req, res, next){
if(req.secure !== true) {
res.redirect('https://'+req.host+req.originalUrl);
} else {
next();
};
});
同样,顺序很重要,如果您希望它在其他路由功能之前运行,则必须将其放在其他路由功能之上。
我之前没有发布过 json,但 @PeterLyon 的解决方案对我来说看起来不错。