2016-03-06 101 views
0

我是Web API的新手,我已經閱讀了一些文檔,但是對架構有些誤解。即我需要爲不同的實體創建許多get方法。但是我可以有且只有一個不帶參數的GET方法。所以,我必須再創建一個API控制器,即使這個控制器根本只有一個方法?這個限制有什麼意義?Web API方法

+0

在路線中包含方法名稱,然後使用多種方法。 – SLaks

+0

@SLaks,謝謝你的迴應。但是這個限制的背景是什麼? –

回答

2

從網址/路線的角度考慮。如果你想訪問一個Foo實體,你可以去/ api/foo,如果你想訪問一個Bar實體,你可以去/ api/bar。

話雖如此,那就是約定,如果你願意,你可以打破它。你肯定可以在一個控制器中有多個GET方法。行動只需要有不同的路線。你可以使用屬性路由來設置它,例如

public class FooBarController : ApiController 
{ 
    [Route("foo")] 
    public Foo Get() {...} 

    [Route("bar")] 
    public Bar GetBar() {...} 
} 

然而,你通常會想堅持到不同的控制器,因爲它使你的代碼更易於維護不同的資源 - 它允許模型和控制器之間有明顯的相關。擁有許多小型控制器沒有任何問題。

+0

是的,但通常需要2種獲得2種Foo集合的方法,只是不同的條件。有一種方法會更好,但參數不同? –

+0

您可以在同一個控制器中爲不同的條件創建多個GET方法。他們只需要在Get()方法中接收這些「條件」作爲參數。例如。獲取(字符串ID)。 – charisk