C# API 同一個 Controller 可以有多個呼叫(非標準做法)

  • 2254
  • 0
  • C#
  • 2017-04-10

C#

Controller 

一般在網頁呼叫最常使用的就是Get和Post
但API的Controller預設就是一組,再加上多載機制
如果需要呼叫的功能很多是必須要建立很多實體XXXController.cs檔案
或使用參數控制後端程式讀取(對輸入輸出Model是個負擔)
所以才會想要修改讀取的方法

//App_Start\WebApiConfig.cs 需擴充原本API的模式

	//--加入程式碼--開始--
	string logInOutA = "LogIn|LogOut";
	string managementA = "|EnterpriseAdd|EnterpriseUpdate";
	config.Routes.MapHttpRoute(
		name: "TransApi",
		routeTemplate: "api/{controller}/{action}/{id}",
		defaults: new { id = RouteParameter.Optional },
		constraints: new { action = logInOutA + managementA });
	//--加入程式碼--結束--

	//當上方自訂模式查無資料時,在使用預設模式
	config.Routes.MapHttpRoute(
		name: "DefaultApi",
		routeTemplate: "api/{controller}/{id}",
		defaults: new { id = RouteParameter.Optional }
//controllers\TestController.cs

	namespace Api.Controllers
	{
		public class TestController : ApiController
		{
			[HttpPost]
			[ActionName("EnterpriseAdd")]	//這裡名稱要和上方依樣
			public string EnterpriseAddXXOO(string Data)
			{
				return Data;
			}

			[HttpPost]
			[ActionName("LogIn")]
			public string LogInXXOO(string Data)
			{
				return Data;
			}
		}
	}

備註:可能會影響一點效能,不確定影響有多少

以API來說這是非標準做法,有類似需求的朋友,請小心使用!

我只是一棵樹