【问题标题】:Supporting generic route for Web API支持 Web API 的通用路由
【发布时间】:2015-10-11 23:34:55
【问题描述】:

我正在使用 Web Api 2.2,我正在尝试实现以下目标: 我有几个控制器,我想要一个看起来像的全局路由 controller/{controller}/action/{action} - 我想要特定的方法来捕捉调用,无论是在 POST 还是 GET(包括它的参数)中。

例如:

HTTP POST    /controller/users/action/getuser
{"user_id": 1234}

HTTP GET    /controller/users/action/getuser?user_id=1234

方法在没有路由的情况下定义:

public User getuser(int user_id)
{
...
}

我无法做到这一点。 援助将不胜感激。 天呐

【问题讨论】:

    标签: asp.net-web-api asp.net-web-api2 asp.net-web-api-routing


    【解决方案1】:

    您可以在 App_Start -> RouteConfig.cs 中设置默认路由

    在RegisterRoutes方法下应该有一个默认的路由设置器。 您想设置类似于:

    routes.MapRoute(
                name: "Default",
                url: "controller/{controller}/action/{action}",
                defaults: new { controller = "Home", action = "Index" }
            );
    

    【讨论】:

    • 考虑一下,考虑到有一些约定:当您使用“getuser”作为用户控制器下的方法名称时,他会将其解析为应用于控制器的get方法。可能最简单的方法是在控制器上使用路由前缀属性,在每个方法上使用路由属性。否则你必须修改所有webapi的路由行为,修改控制器选择器。
    猜你喜欢
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 2020-01-04
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    相关资源
    最近更新 更多