如何使用参数和正则表达式创建KOA路由

时间:2015-01-06 20:26:39

标签: routes koa

如何完成以下KOA路由处理程序:

app.get("/Chicago_Metro/Cicero_City", myFunctionHandler1)
app.get("/Cook_County/Cicero_City", myFunctionHandler2)

结束了#34;芝加哥"作为" metro"的传递参数或者"库克"通过县和"西塞罗"在下面的处理程序中传递给#34;城市:

function *myFunctionHandler1(metro, city) {
...
}

function *myFunctionHandler2(county, city) {
...
}

我正在考虑路线中的正则表达式,但我从未见过如何与它混合:param。

注意:我需要保留该路径语法,因为它已经过SEO和上面的索引。

最糟糕的情况可能是我最终将整个名称作为参数并在单个handlerFn中处理它并测试结尾为_metro或_county或_city

1 个答案:

答案 0 :(得分:5)

Regex Capture Group

var koa   = require('koa'),
    route = require('koa-router'),
    app   = koa();

app.use(route(app));

app.get(/^\/(.*)(?:_Metro)\/(.*)(?:_City)$/, function *(){
    var metro = this.params[0];
    var city = this.params[1];
    this.body = metro + ' ' + city;
});

app.get(/^\/(.*)(?:_County)\/(.*)(?:_City)$/, function *(){
    var county = this.params[0];
    var city = this.params[1];
    this.body = county + ' ' + city;
});

app.listen(3000);