2014-12-17 4 views
0

저는 ASP.NET의 웹 API 프레임 워크를 사용하여 REST API를 구현하고 있습니다. 내 API 노선은 전형적인 형식이,접두어가 붙은 웹 API 경로 - 어떻게 처리하나요?

$BASE_URI/api/resource1... 
$BASE_URI/api/resource2... 
$BASE_URI/api/resource3... 

등 (모든 경우) 대부분의 경로는 또한 ID와 옵션 접두사가 : 접두사가 제공되지

$BASE_URI/api/prefix/{id}/resource1... 
$BASE_URI/api/prefix/{id}/resource2... 
$BASE_URI/api/prefix/{id}/resource3... 

를, API는입니다 기본값 (예 : 0)을 사용하고 응답에 권한 부여가 필요하지 않습니다. 접두어 인 경우 요청을 승인해야합니다.

프리픽스는 매번과 동일한 방식으로 에서 처리됩니다 (그러나 분명히 다른 리소스가 다르게 처리됩니다). 나에게 경로의 prefix 구성 요소를 별도로 구문 분석 한 다음 경로 접미사를 정상적으로 처리 할 수있는 방법이 있습니까? 나는 에 대한 중복 된 경로 항목이있는 상황을 피하려고 노력하고 있습니다. 리소스 만이 유일한 차이점은 접두어 처리입니다.

이 디자인이 좋지 않다고 생각 되시면 그에 대해 듣고 싶습니다.

미리 감사드립니다.

답변

2

두 개의 별도 경로를 정의해야합니다. 다른 방법은 없습니다.

config.Routes.MapHttpRoute(
    name: "DefaultApiWithPrefix", 
    routeTemplate: "api/prefix/{prefixId}/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

config.Routes.MapHttpRoute(
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 
관련 문제