cho*_*ovy 7 routes node.js express
我想要一个可选的扩展名,比如.xmlor .csv或.json(默认情况下,没有扩展名会返回json).
app.get('/days-ago/:days(.:ext)?', function(req, res) {
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用,有什么我做错了吗?
GET /days-ago/7.xml
GET /days-ago/7.csv
GET /days-ago/7.json
GET /days-ago/7
Run Code Online (Sandbox Code Playgroud)
您似乎使用错误的模式进行路由.这是更正的一个:
app.get('/days-ago/:days\.:ext?', function(req, res) {
Run Code Online (Sandbox Code Playgroud)
因此,为了实现您的目标,我将创建一个中间件来检查空参数并将其设置为所需的参数
像这样的东西:
var defaultParamMiddleware = function(req, res, next) {
if (!req.params.ext) {
req.params.ext = 'json';
}
next();
};
app.get('/days-ago/:days\.:ext?', defaultParamMiddleware, function (req, res) {
res.json(req.params);
});
Run Code Online (Sandbox Code Playgroud)
尝试真正的正则表达式:(app.get(/\/days-ago\/\w+(\.\w+)?/), function (req, res {...或类似的)。路由参数内置语法非常有限。它实际上可能能够表达您需要的内容,但我不认为将正则表达式内置到语言中并很好地理解有什么意义。
| 归档时间: |
|
| 查看次数: |
2476 次 |
| 最近记录: |