在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