如果可以全局定义,为什么需要自定义路线?

时间:2018-10-05 09:00:24

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

如果我可以在global.ascx或类似文件中添加路由,那为什么我们需要自定义路由器,即通过单个WebApi方法的路由。什么时候需要?有什么好处?

 [System.Web.Http.HttpPost]
 [Route("api/AndroidOperations/AddManualAppointment")]
        public object AddManualAppointment(AddManualBookingViewModel AddManualBookingVM) 
        {
            BookingsRepository BookingRep= new BookingsRepository();

            int ReturnRowsCount = BookingRep.InsertManualCustomerAppointments(AddManualBookingVM, out ReturnStatus, out ReturnMessage, out ReturnBookingID);

            return new {ReturnMessage= ReturnMessage, ReturnStatus= ReturnStatus};
        }

1 个答案:

答案 0 :(得分:1)

与常规路由相比,属性路由是一种更灵活的解决方案,仅因为它可以为您提供更大的灵活性,并将路由放置在将实际使用它们的操作旁边。

请考虑在以下情况下选择传统路线:

  • 您要集中配置所有路由。
  • 您使用自定义约束对象。
  • 您有一个不想更改的现有应用程序。

考虑在以下情况下选择属性路线:

  • 您希望将路线和操作代码保持在一起。
  • 您正在创建一个新应用程序或对现有应用程序进行重大更改。

属性路由很好地将有关控制器的所有内容保持在一起,包括它们使用的URL和运行的动作。但是,同时使用这两种方法肯定有好处,特别是在您知道某些路线会看起来却不确定其他路线的情况下。

注意:属性路由更具体,并且覆盖了约定路由。确保应首先将属性路由定义为基于约定的路由。

要了解更多信息,请参见docsAttribute Routing vs Convention Routing