我有一个存储在数据库中的分层结构的内容。我想让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!');
});