2011-11-07 100 views
0

路線我有一個API我目前使用WCF的Web API開發的一個問題,這就是事情:註冊WCF的Web API

我想作爲服務合同註冊多個資源類。所以我有一個RootResource,我可以從中訪問ChildResource1,ChildResource2,ChildResourceN。

從本質上講就是我想要做的就是用下面的航線結構進行HTTP操作的意甲:

  1. GET/RootResource/{RootResouceId}/ChildResourceN/{ChildResourceNId}(這將讓第N ChildResource從RootResource)

我的當前資源註冊:

routes.MapServiceRoute<ChildResource1>("RootResource"); 

而我的操作在資源內註解如下:

[WebGet(UriTemplate = "{RootResouceId}/ChildResource1/{ChildResource1Id}")] 

但是這種方法並不方便對我來說,因爲我所有的路由都需要具有相同的圖案,我在上面提到的一個。

如果我現在要註冊其他資源,免得說ChildResource2,則:

routes.MapServiceRoute<ChildResource2>("RootResource"); 

注意,基本路線是一樣的,和WCF網絡API不允許這樣。

回答

1

傳遞到MapServiceRoute()中的「RootResource」必須映射到由T指定的單一類型。因此,如果您想在使用方案時指定您需要創建單個服務契約並將所有內容映射到該服務合同。來自描述我不確定{RootResouceId}映射到給定類型的特定項目,即所有類型都是相同的,在這種情況下,將它們放在一個合同或不同類型中是合理的,在這種情況下,我會這部分服務映射,即

routes.MapServiceRoute<ChildResource1>("RootResource/Child1"); 
routes.MapServiceRoute<ChildResource2>("RootResource/Child2");