デフォルトの/api/ {controller}を使用しながら、複数の「Get」メソッドを使用できるようにするのに問題がありました。これはダミーコードの例です(はい、まったく同じものが返されることを理解しています)。
エラー:"Multiple actions were found that match the request"
私が行こうとすると/api/courses
行くこと/api/courses/all
はうまくいきます、そしてそうします/api/courses/3
// GET api/courses
public IEnumerable<Courses> Get()
{
return Db.Courses.OrderBy(x => x.Name);
}
// GET api/courses/all
[ActionName("all")]
public IEnumerable<Courses> GetAll()
{
return Db.Courses.OrderBy(x => x.Name);
}
// GET api/courses/id
[ActionName("all")]
public Courses Get(int id)
{
return Db.Courses.Where(x => x.id == id);
}
RouteConfig
次のようになります:
routes.MapHttpRoute(
"ApiControllerOnly",
"api/{controller}"
);
// Allow for numeric Ids to be passed in
routes.MapHttpRoute(
"ApiControllerAndIntegerId",
"api/{controller}/{id}",
null,
new { id = @"^\d+$" }
);
routes.MapHttpRoute(
"ApiControllerAction",
"api/{controller}/{action}"
);
私がしたいのは電話です:
/api/courses - returns Get()
/api/courses/all - returns GetAll()
/api/courses/3 - returns Get(id = 3)
編集:
Putting
また、/ api / course /のコースなど、Put、Postなどが機能するようにする必要があります。