获取“全部”的通用Web API路由 - WebAPI v1

时间:2013-11-08 14:00:11

标签: c# asp.net-web-api asp.net-web-api-routing

我正在尝试创建一个路由,该路由将由我的每个控制器的GetAll方法与分页的默认Get方法处理,以便网址如下所示:“api / {controller} / all”

    public class MyController {
        public IEnumerable<MyModel> GetAll() {
            ...
        }
        public IEnumerable<MyModel> Get(int page = 0, int pageSize = 50) {
            ...
        }
    }

    public class MyOtherController {
        public IEnumerable<MyOtherModel> GetAll() {
            ...
        }
        public IEnumerable<MyOtherModel> Get(int page = 0, int pageSize = 50) {
            ...
        }
    }

我的路线目前看起来像这样:

    config.Routes.MapHttpRoute(
        name: ControllerOnlyRoute,
        routeTemplate: "api/{controller}"
    );

    config.Routes.MapHttpRoute(
        name: ControllerAndIdRoute,
        routeTemplate: "api/{controller}/{id}",
        defaults: null
    );

    config.Routes.MapHttpRoute(
        name: ControllerActionRoute,
        routeTemplate: "api/{controller}/{action}"
    );

我不确定如何为每个将路由到GetAll方法的控制器创建路由?

1 个答案:

答案 0 :(得分:1)

您应该使用Attribute routing nuget包。它使您的路由设置变得更加容易,甚至可以作为WebApi 2的一部分。可以找到它的文档here