2015-01-06 6 views
1
나는 다음과 같은 KOA 경로 처리기 달성 할 수있는 방법

모두 KOA 경로를 만드는 방법 :매개 변수와 정규식

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

및 매개 변수가 "지하철"OR "쿡을 위해 전달 될대로"시카고 "로 끝 "군에 대한 통과"아래 내 ​​처리기에서 도시를위한 "통과"시세 :

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

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

내가 경로에 정규식을 고려했지만, 난 그와 함께 혼합 할 수있는 방법을 본 적이 :. PARAM

참고 : 나는 그 길을 유지할 필요가있다. 구문은 이미 SEO'ed 및 위와 같이 색인이 생성됩니다.

최악의 경우 아마 내가 매개 변수로 전체 이름으로 결국 단일 handlerFn 내부를 처리하고 _metro하는 결말 또는 _county 또는 _city

답변

4

정규식 캡처 그룹

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); 
을 테스트합니다