簡體   English   中英

如何在asp.net MVC4中為web api Url創建通用方法

[英]How to create common method for web api Url in asp.net MVC4

我已經開始使用 Web Api。 我嘗試為所有 web api 請求創建一個主方法,例如在下面的快照中,方法名稱 GetMenu() 和參數將是 userpkid。

快照 1

現在,我將嘗試為 web api 創建通用方法。 當請求來自 web api 時,它們將方法名稱和參數分開,而不是動態調用任何方法名稱並傳遞參數。 例如,請求來自菜單控制,而不是進入菜單控制任何方法名稱和參數,如果請求來自國家控制而不是進入國家控制任何方法名稱和參數。 那么我怎樣才能做到這一點..

快照 2

解決方案取決於參數名稱是否重要。 默認情況下,在 Microsoft Web Api 中,查詢字符串參數名稱必須與方法的參數變量名稱匹配 例如:

如果網址是

"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 };
    }
}

調用網址:

"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 };
    }
}

調用網址:

"api/MenuData/GetMenu/UserPKId?parameter=1"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM