我正在使用接近 aspnetwebstack Codeplex 项目的最新位(如果有人感兴趣,2012-05-09 的 4592e2f63c55)开发一个 API。
我有以下路线:
context.Routes.MapHttpRoute("SiteSpecific", "Api/{controller}/{customerId}/{siteToken}/{id}",
new { id = UrlParameter.Optional });
而我目前正在尝试做的是实现 get single 和 get all in an ApiController
. 用于测试的 Get all 方法如下:
public IEnumerable<EditChatResponse> Get(string customerId, string siteToken)
{
return new []{new EditChatResponse{Template = "Get All"}, };
}
而get单曲目前如下:
public EditChatResponse Get(string customerId, string siteToken, string id)
{
return new EditChatResponse {Template = "Get Single"};
}
但是,路由总是选择 Get single 方法:
$ curl -i -H "Accept: applicaiton/json" http://localhost/api/chatresponse/a/b
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 14 May 2012 18:06:26 GMT
Content-Length: 66
{"Id":0,"Template":"Get Single","Inherited":false,"Enabled":false}
$ curl -i -H "Accept: applicaiton/json" http://localhost/api/chatresponse/a/b/c
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 14 May 2012 18:06:28 GMT
Content-Length: 66
{"Id":0,"Template":"Get Single","Inherited":false,"Enabled":false}
我尝试将 Get all 方法重命名为GetAll
,正如我在一些示例中看到的那样,用 来装饰它[HttpGet]
,但它仍然选择单一方法。
我是否完全遗漏了某些东西,或者我需要以不同的方式解决这个问题(我看到的大多数示例看起来都与 beta 位相关,而不是 CodePlex 的最新版本)?