Web API路由以匹配名称空间

时间:2019-07-15 16:33:03

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

我正在为自己的工作地点的内部消费创建一个Web API。我之前没有创建过Web API。

我想知道,是否可以将我的“ WebApiConfig.cs”文件(我在其中处理默认路由)配置为默认为控制器的名称空间路由?

例如:

CalendarDatesController.cs

namespace SampleWebService.Controllers.CalendarServices {
public class MilestoneDatesController : ApiController  {
    public DateTime Get() {
        return new DateTime();
    }
}

}

WebApiConfig.cs(默认)

public static void Register(HttpConfiguration config)  {
        // Web API configuration and services

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }

WebApiConfig.cs(建议)

public static void Register(HttpConfiguration config)  {
        // Web API configuration and services

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{**CalendarServices**}/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }

在我的“建议”中,路径中将包含“ CalendarServices”,但是,如果我创建另一个文件夹,则希望该文件夹位于该位置。我只想将其默认设置为-api / ControllersParentFolder / Controller / id

2 个答案:

答案 0 :(得分:1)

尽管本文基于版本控制,但您应该可以根据需要使用它。

https://devblogs.microsoft.com/aspnet/asp-net-web-api-using-namespaces-to-version-web-apis/

答案 1 :(得分:0)

在 Github 上查看我的解决方案 (WebApiNamespaceRouting)。

特点:

  • 不同命名空间中的相同控制器名称
  • 根据命名空间模式过滤路由中的控制器
  • 与 swagger 兼容