的解決方案取決於參數名稱是否是很重要的。 By default within Microsoft Web Api, the query string parameter name must match the parameter variable name of the method。例如:
如果URL是
"api/MenuData/GetMenu?UserPKId=1"
則控制器方法必須具有下列參數列表
public MyModel CommonWebApiMethod(string MethodName, string UserPKId)
不重要的參數名稱
配置路由:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "MethodName",
routeTemplate: "api/MenuData/{MethodName}",
defaults: new { controller = "Common", action = "CommonWebApiMethod" }
);
}
}
控制器:
public class CommonController : ApiController
{
[HttpPost]
public MyModel CommonWebApiMethod(string MethodName, string parameter)
{
return new MyModel { MethodName = MethodName, Parameter = parameter };
}
}
URL呼叫:
"api/MenuData/GetMenu?parameter=1"
重要的參數名稱
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "ParameterName",
routeTemplate: "api/MenuData/{MethodName}/{parameterName}",
defaults: new { controller = "Common", action = "CommonWebApiMethod" }
);
}
}
控制器:
public class CommonController : ApiController
{
[HttpPost]
public MyModel CommonWebApiMethod(string MethodName, string parameterName, string parameter)
{
return new MyModel { MethodName = MethodName, Parameter = parameter };
}
}
URL呼叫:
"api/MenuData/GetMenu/UserPKId?parameter=1"
添加sourceType的PARAM在你客戶端的請求頭,並從的WebAPI HttpRequestHeaders提取出來,並根據該sourceType的再細分功能。如果你有一個固定的源類型集,你可以在你的服務api中爲此目的進行枚舉。然後使用開關盒來分割您的CommonWebApiMethod。 SourceType可以是你的控件 – Pushpendra
嗨,從web api url我區分控制器名稱,方法名稱和參數no如何調用此方法的任何特定控制器和特定參數.. –