在MVC4中使用新的Api控制器,我發現一個問題。如果我有以下幾種方法:Api控制器聲明多個Get語句
public IEnumberable<string> GetAll()
public IEnumberable<string> GetSpecific(int i)
這將工作。但是,如果我想要檢索不同類型的一些不同的數據,則默認爲GetAll
方法,即使$.getJSON
設置爲GetAllIntegers
方法:
public IEnumberable<int> GetAllIntergers()
(壞的命名約定)
我可以做到這一點嗎?
Web API控制器中只能有一個GetAll
方法嗎?
我覺得想要實現我想要的更容易。下面是一個代碼片段,顯示想我是能夠做到的,在一個單一的ApiController
:
public IEnumerable<string> GetClients()
{ // Get data
}
public IEnumerable<string> GetClient(int id)
{ // Get data
}
public IEnumerable<string> GetStaffMember(int id)
{ // Get data
}
public IEnumerable<string> GetStaffMembers()
{ // Get data
}
快速的問題,我可以路線是這樣,仍然叫我的方法只有「郵報」和讓它們自動只接受HttpPost如果我包括ActionNameAttribute? – Alxandr 2012-05-05 23:14:37
@Alxandr您仍然必須使用AcceptVerbsAttribute(或HttpPostAttribute,HttpGetAttribute等) – tpeczek 2012-05-06 17:40:52
我有一些問題,路由 - 我可以定義多個「GET」方法,但如果我打/ API/{}控制器服務器給HTTP 500「找到多個動作」而不是404。任何想法如何阻止這個?我想要的是將/ api/{controller}/{id}路由到「Get,Post,Put,Delete等」,然後讓/ api/{controller}/{id}/{action}路由到一個特定的動作,例如/ api/Customers/5/Products。不起作用 - 一切都會導致「發現多個操作」錯誤。 – ShadowChaser 2012-05-16 16:04:24