如何向Web API路由添加其他占位符值

时间:2015-10-28 19:29:10

标签: asp.net rest asp.net-web-api

我正在研究使用ASP.NET Web API框架构建一个restful API。

使用的基本路线格式是

api/{controller}/public/{category}/{id}

我已经阅读了很多关于框架如何解析控制器和在这些控制器中执行的操作的内容,并且对此感到非常满意。

但最终,我需要做的是在控制器部分之前添加一个额外的占位符元素,它将充当路由元素,以确定应该对其执行操作的端点。防爆。

api/{endpointId}/{controller}/public/{category}/{id}

在Web API框架中实现此目的的最简单方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用属性路由(在整个控制器类或单独的每个方法中指定为属性)或传统路由。如果每个控制器都有多个可能的端点,那么通过属性路由可能更难实现您想要的端点,尽管仍然可能。如果您选择使用传统路线(双关语),您可以将其设置为类似这样:

改编自Web API 2 docs

    public static class WebApiConfig {
        public static void Register(HttpConfiguration config)
        {
            // Attribute routing.
            config.MapHttpAttributeRoutes();

            // Convention-based routing.
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{endpointId}/{controller}/public/{category}/{id}",
                defaults: new { endpointId = "1", controller = "DefaultController", category = "DefaultCategory"
id = RouteParameter.Optional }
            );
        } }