Web API 路由以匹配命名空间
Web API routing to match namespace
我正在创建一个 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 }
);
}
在我的 "proposal" 中,它会在路径中包含 'CalendarServices',但是,如果我创建另一个文件夹,我希望其他文件夹位于它的位置。我只是希望它默认为 - api/ControllersParentFolder/Controller/id
虽然本文是基于版本控制的,但您应该可以根据需要使用它。
https://devblogs.microsoft.com/aspnet/asp-net-web-api-using-namespaces-to-version-web-apis/
看看我在 Github 上的解决方案 (WebApiNamespaceRouting)。
特点:
- 不同命名空间中的相同控制器名称
- 根据命名空间模式过滤路由中的控制器
- 与 swagger 兼容
我正在创建一个 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 }
);
}
在我的 "proposal" 中,它会在路径中包含 'CalendarServices',但是,如果我创建另一个文件夹,我希望其他文件夹位于它的位置。我只是希望它默认为 - api/ControllersParentFolder/Controller/id
虽然本文是基于版本控制的,但您应该可以根据需要使用它。
https://devblogs.microsoft.com/aspnet/asp-net-web-api-using-namespaces-to-version-web-apis/
看看我在 Github 上的解决方案 (WebApiNamespaceRouting)。
特点:
- 不同命名空间中的相同控制器名称
- 根据命名空间模式过滤路由中的控制器
- 与 swagger 兼容