jus*_*ses 24 connect node.js express
有没有人知道express.js中的一种方法来捕获html和json的单个函数中的请求?
基本上我想两个单一路线/users
和/users.json
-像Rails会与它的路线- >控制器.
这样,我可以将逻辑封装在一个函数中,并决定渲染html或json.
就像是:
app.get('/users[.json]', function(req, res, next, json){
if (json)
res.send(JSON.stringfy(...));
else
res.render(...); //jade template
});
Run Code Online (Sandbox Code Playgroud)
我可以使用一个参数吗?
Bea*_*eau 53
我相信res.format()是在Express 3.x和4.x中执行此操作的方法:
res.format({
text: function(){
res.send('hey');
},
html: function(){
res.send('<strong>hey</strong>');
},
json: function(){
res.send({ message: 'hey' });
}
});
Run Code Online (Sandbox Code Playgroud)
这依赖于Accept标头,但是您可以使用自定义中间件或类似connect-acceptoverride来自己处理此标头.
自定义中间件的一个示例可能是:
app.use(function (req, res, next) {
var format = req.param('format');
if (format) {
req.headers.accept = 'application/' + format;
}
next();
});
Run Code Online (Sandbox Code Playgroud)
ale*_*lex 20
一个路由很简单,一个字符串,在内部编译成一个RegExp,如手册所示,所以你可以这样做:
app.get("/users/:format?", function(req, res, next){
if (req.params.format) { res.json(...); }
else {
res.render(...); //jade template
}
});
Run Code Online (Sandbox Code Playgroud)
点击此处查看更多信息:http://expressjs.com/guide.html#routing
归档时间: |
|
查看次数: |
13485 次 |
最近记录: |