2016-05-30 64 views
1

我已經開始使用Web Api。我嘗試爲所有web api請求創建一個主方法,例如,在下面的Snapshot中,方法名稱爲GetMenu(),參數爲userpkid。現在如何在asp.net MVC4中爲web api創建常用方法

snapshot 1

,我將嘗試創建普遍的一種網絡API。請求的時候要比來自web api的動態分配方法名和參數比動態調用任何方法名並傳遞參數。例如,對於菜單控制,如果請求來自國家/地區控制,則進入菜單控制,而不管菜單控制中的方法名稱和參數,而不是進入國家/地區控制中的任何方法名稱和參數。那麼,如何才能做到這一點..

Snapshot 2

+0

添加sourceType的PARAM在你客戶端的請求頭,並從的WebAPI HttpRequestHeaders提取出來,並根據該sourceType的再細分功能。如果你有一個固定的源類型集,你可以在你的服務api中爲此目的進行枚舉。然後使用開關盒來分割您的CommonWebApiMethod。 SourceType可以是你的控件 – Pushpendra

+0

嗨,從web api url我區分控制器名稱,方法名稱和參數no如何調用此方法的任何特定控制器和特定參數.. –

回答

1

的解決方案取決於參數名稱是否是很重要的。 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" 
相關問題