網址路由(Routing),全部頁面被 /App_Start/RouteConfig.cs 導向(當然可以自己定義路由), MVC的Controllers與WebApi分別是用以下兩個檔案控制:
/App_Start/RouteConfig.cs
/App_Start/WebApiConfig.cs
可能會有困惑,以上兩者的差異為{action},那WebApi到底要不要有Aciton比較好呢?其實JSON原理是用不同的傳輸協定去Call不同的方法,例如Get、Post、Put,沒有{action}是符合設計原理的,但是有時候這樣又不太好用,那到底要不要改掉WebApiConfig.cs呢?
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
建議是兩個預設Routing都不要改,因為真正再撰寫的時候可以強迫指定拉,根本不用改預設喔。
[Route("api/test/getTestDataById")]
[Route("api/test/getTestDataById/{testId}")]
[HttpGet]
public List<Test> getTestDataById(string testId)
{
List<Test> testList = new List<Test>();
return GetTestDataDao(testList, testId, null, null);
}
有個很重要的觀念,如果回傳的JSON只是單筆資料,那可以回傳Dictionary就打完收工了,但是如果是多筆資料,那個就要建立該物件的Class,例如上例是Test,回傳用List組合該物件,那麼就會自動組好JSON資料,Test物件範例如下:
public class Test
{
public string testId { get; set; }
public string testName { get; set; }
}