Peta rute Anda mungkin kira-kira seperti ini:
routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional });
Tetapi untuk memiliki beberapa tindakan dengan metode http yang sama, Anda perlu memberi webapi informasi lebih banyak melalui rute seperti:
routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional });
Perhatikan bahwa routeTemplate sekarang termasuk tindakan. Banyak info lebih lanjut di sini: http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api
Memperbarui:
Baiklah, sekarang saya pikir saya mengerti apa yang Anda cari di sini adalah satu lagi mengambil ini:
Mungkin Anda tidak memerlukan parameter url tindakan dan harus menjelaskan konten yang Anda cari dengan cara lain. Karena Anda mengatakan bahwa metode mengembalikan data dari entitas yang sama maka biarkan saja parameter yang menjelaskan untuk Anda.
Misalnya, dua metode Anda dapat diubah menjadi:
public HttpResponseMessage Get()
{
return null;
}
public HttpResponseMessage Get(MyVm vm)
{
return null;
}
Jenis data apa yang Anda berikan pada objek MyVm? Jika Anda hanya bisa melewati variabel melalui URI, saya akan menyarankan pergi rute itu. Kalau tidak, Anda harus mengirim objek di badan permintaan dan itu tidak terlalu HTTP Anda ketika melakukan GET (berfungsi meskipun, cukup gunakan [FromBody] infront dari MyVm).
Semoga ini menggambarkan bahwa Anda dapat memiliki beberapa metode GET dalam satu kontroler tanpa menggunakan nama tindakan atau bahkan atribut [HttpGet].