模拟URL中的文件结构



我有一个存储在数据库中的分层结构的内容。我想让URL反映当前元素的路径。例如,如果我想表示一个动物数据库,我可能希望URL为:animals.com/kingdom/phylum/class/order/family/genus,它将显示该属的物种列表。我如何接受对匹配该格式的URL的请求、解析它并显示适当的页面?

如果您想自己做而不是使用框架,您可以使用url.parse()从url中提取路径,然后使用split()从path元素创建数组。

var url = require('url');
var myUrl = "http://animals.com/kingdom/phylum/class/order/family/genus";
var myPath = url.parse(myUrl).path;
var elements = myPath.substr(1).split('/');
console.log(elements); // [ 'kingdom', 'phylum', 'class', 'order', 'family', 'genus' ]

你可以考虑使用像Express这样的框架,为这些东西提供健壮的路由选项。例如,在Express中,您可以这样做:

app.get('/animal/:kingdom/:phylum/:class', function (req, res, next) {
  console.log('Kingdom: ', req.params.kingdom);
  console.log('Phylum: ', req.params.phylum);
  console.log('Class: ', req.params.class);
  res.send('Hello animal, lover!');
});

最新更新