티스토리 뷰
Web Api Routing for multiple Get methods in ASP.NET MVC 4
kaki104 2013. 2. 28. 17:08MVC4로 WebAPI를 사용하고 있었는데, 하나의 컨트롤러에서 여러 방식의 Get 메소드를 사용하려고 찾아보다가 해결완료
간단하게 포스트 하도록 하겠다.
0. 참고포스트
http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api
http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selection
1. WebApiConfig
public static class WebApiConfig
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = "Get", id = RouteParameter.Optional }
}
2. Controller
public class TotalController : ApiController
{
private DataContext db = new DataContext();
[ActionName("LocaleUsers")]
public IEnumerable<KeyValuePair<string, int>> GetLocaleUsers()
{
List<KeyValuePair<string, int>> results = new List<KeyValuePair<string, int>>();
var rows = from kkk in db.MST_USER
group kkk by kkk.USER_LOCALE_VC into g
select new { Locale = g.Key, Count = g.Count() };
foreach (var item in rows.OrderByDescending(p => p.Count))
{
results.Add(new KeyValuePair<string, int>(item.Locale, item.Count));
}
return results;
}
[ActionName("ShareUsers")]
public IEnumerable<KeyValuePair<string, int>> GetShareUsers()
{
List<KeyValuePair<string, int>> results = new List<KeyValuePair<string, int>>();
var rows = from kkk in db.MST_USER
join jjj in
(from iii in db.MST_SHARE_FOLDERS
select iii.CREATER_ID).Distinct()
on kkk.USER_ID equals jjj
group kkk by kkk.USER_LOCALE_VC into g
select new { Locale = g.Key, Count = g.Count() };
foreach (var item in rows.OrderByDescending(p => p.Count))
{
results.Add(new KeyValuePair<string, int>(item.Locale, item.Count));
}
return results;
}
3. 실제 사용
엑션뒤에 {id}가 없으면 DefaultApi를 사용해야하는지, ActionApi를 사용해야하는지 판단을 못하는 듯..
http://localhost:60329//api//Total//LocaleUsers//junk
http://localhost:60329//api//Total//ShareUsers//junk
4. Id가 숫자형이 아닌 문자형이라면
기본은 비슷한데 좀 여러군데 수정을 해야한다.
'Previous Platforms > HTML5 & MVC4' 카테고리의 다른 글
SignalR test game pilot (2) | 2013.03.22 |
---|---|
SignalR getting start url list (2) | 2013.03.22 |
SignalR을 사용한 영화 예매 시스템 구현 (2) | 2012.11.02 |
WebAPI OData query sample - Framework 4.5, MVC4, Windows 8 RP, RTM app base (0) | 2012.09.07 |
MVC4 tips (0) | 2012.08.31 |
- Total
- Today
- Yesterday
- Visual Studio 2022
- #Windows Template Studio
- LINQ
- WPF
- Always Encrypted
- MVVM
- PRISM
- Build 2016
- kiosk
- #uwp
- ComboBox
- XAML
- dotNETconf
- Cross-platform
- uno platform
- ef core
- #prism
- C#
- uno-platform
- Windows 10
- Bot Framework
- Behavior
- .net
- UWP
- Microsoft
- #MVVM
- .net 5.0
- visual studio 2019
- windows 11
- IOT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |