aspnetwebstack Codeplexプロジェクトの最新ビットに近いものを使用してAPIを開発しています(興味のある方は2012-05-09の4592e2f63c55)。
私は次のルートを持っています:
context.Routes.MapHttpRoute("SiteSpecific", "Api/{controller}/{customerId}/{siteToken}/{id}",
new { id = UrlParameter.Optional });
そして、私が現在やろうとしているのは、getsingleとgetallinを実装することですApiController
。テスト用のGetallメソッドは次のとおりです。
public IEnumerable<EditChatResponse> Get(string customerId, string siteToken)
{
return new []{new EditChatResponse{Template = "Get All"}, };
}
そして、getsingleは現在次のとおりです。
public EditChatResponse Get(string customerId, string siteToken, string id)
{
return new EditChatResponse {Template = "Get Single"};
}
ただし、ルーティングは常にGetsingleメソッドを選択しています。
$ 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]
たが、それでも単一のメソッドが選択されます。
私は何かを完全に見逃していますか、それともこれを別の方法で行う必要がありますか(私が見る例のほとんどはベータビットに関連しているように見え、CodePlexの最近のバージョンではありません)?