WebApiConfig.cs で次の 2 つのルートが定義されています。
config.Routes.MapHttpRoute(
name: "DefaultApiWithAction",
routeTemplate: "api/{controller}/{action}/{id}"
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
サーバーでは、次の 2 つの方法があります。
public IEnumerable<SampleForm> Get()
{
// do stuff
}
public IEnumerable<SampleForm> GetSampleFormsByState([FromUri]string[] state)
{
// do stuff
}
「リクエストに一致する複数のアクションが見つかりました」というエラーが表示され、これら 2 つの方法を指摘しています。リクエストは次のようなものです。
http://localhost/tracker/api/sampleform?state[]=pending&state[]=rejected&state[]=removed
興味深いのは、2 番目の方法を次のように変更した場合です。
public IEnumerable<SampleForm> GetSampleFormsByState(string state)
{
// do stuff
}
次のようなリクエストを行います。
http://localhost/tracker/api/sampleform?state=pending
問題はない。
何が起こっている?ルーティングが失敗する原因となるアレイの原因は何ですか? 私は何をする必要がありますか?