2014-02-24 196 views
0

在現有的LOB應用程序中,我添加了新的Web API項目。由於應用程序(域對象,DAL-ADO.NET-DataReader,BLL)中的現有圖層,我決定通過保留現有邏輯來使用Web API。設計Web API控制器

第一個問題:這是正確的嗎?

BLL中有一個方法返回對象的列表,並接收4個參數。所有這些輸入參數都可以爲NULL,在這種情況下,該方法返回完整的對象列表。

第二個問題:如何爲上述方法設計WEB API控制器?

public static List<DomainObject> GetTata(int? param1,int? param2, int? param3, int? param4) 
{ 
    List<DomainObject> return = new List<DomainObject>(); 

    using (Context context = new Context()) 
    { 
     return = MyDAL.GetData(param1,param2,param3,param4, context); 
    } 

    return return ; 
} 

回答

1

不知道是什麼數據手段,但設計的WebAPI時,你應該考慮在「資源」(而不是「動作」的思想)。

我不喜歡該方法是靜態的(老實說,從來沒有測試過它,我不知道是否有用),但提供響應的方法應該是實例方法(遲早你可能需要訪問一些實例字段)。

不知道這四個參數是什麼,但您應該考慮訪問此控制器的URL。讓我們假設這個控制器返回類似「Customers」的東西。所以我覺得URL是這樣的:

/api/Customers -> Get ALL customers 
/api/Customers/{id} -> Get Customer of this id 

附加過濾器和clausules(ORDER BY,如果需要的話分頁)通常是通過查詢字符串傳遞(即採取怎樣的OData做到這一點看看)。例如:

/api/Customers?name=foo -> Get ALL customers which its name starts with foo 
/api/Customers?name=x&order=birthDate -> Get ALL customers which its name starts with x and ordered by birhDate. 

因此,您的控制器應該在URL參數(路由和查詢字符串)之間轉換爲DAL類所需的參數。但是,大多數時候將DAL類期望的相同參數暴露給WebApi並不是一個好主意。

希望這有助於...更多信息,你應該提供一些更多的信息(什麼參數意味着,等等)。 ;)