Rota haritanız muhtemelen şöyle bir şeydir:
routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional });
Ancak aynı http yöntemiyle birden fazla işlem yapabilmek için webapi'ye aşağıdaki gibi rota üzerinden daha fazla bilgi sağlamanız gerekir:
routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional });
RouteTemplate'in artık bir eylem içerdiğine dikkat edin. Burada daha fazla bilgi var: http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api
Güncelleme:
Pekala, şimdi burada ne olduğunuzu anladığımı düşündüğümde başka bir şey daha var:
Belki de eylem url parametresine ihtiyacınız yoktur ve peşinde olduğunuz içerikleri başka bir şekilde tanımlamanız gerekir. Yöntemlerin aynı varlıktan veri döndürdüğünü söylediğiniz için, parametrelerin sizin için açıklamayı yapmasına izin verin.
Örneğin, iki yönteminiz şu şekilde dönüştürülebilir:
public HttpResponseMessage Get()
{
return null;
}
public HttpResponseMessage Get(MyVm vm)
{
return null;
}
MyVm nesnesine ne tür veriler iletiyorsunuz? Eğer değişkenleri sadece URI'den geçirebiliyorsanız, o rotaya gitmenizi öneririm. Aksi takdirde, nesneyi isteğin gövdesinde göndermeniz gerekir ve bir GET yaparken çok HTTP değilsiniz (ancak çalışır, sadece MyVm'in önünde [FromBody] 'i kullanın).
Umarım bu, eylem adını veya [HttpGet] özniteliğini kullanmadan tek bir denetleyicide birden fazla GET yöntemine sahip olabileceğinizi gösterir.