c# - Web API 2 中的多路路由
问题描述
我正在使用 Web API 2,我想使用 (name & id) 等参数进行路由。
当我尝试这个时:
config.Routes.MapHttpRoute(
name: "IDApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "NameApi",
routeTemplate: "api/{controller}/{action}/{name}",
defaults: new { name = RouteParameter.Optional }
);
我的路线“api/customer/getByID/5”运行良好。
但是路线'api/customer/searchByName/fawzy'不起作用。
如果我在IDAPI路由之前设置NameAPI路由,结果是相反的。
有任何想法吗 ?
解决方案
我通过模式和路由属性的组合解决了这个问题
在WebAPIConfig文件中:
config.Routes.MapHttpRoute(
name: "IDApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: null,
constraints: new { id = @"^[0-9]+$" }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}",
defaults: null
);
在控制器中:
[HttpGet]
[Route("api/customer/search/{name}")]
public IHttpActionResult Search(string name)
{
}
[HttpGet]
public IHttpActionResult Get(int id)
{
}
推荐阅读
- html - 解决问题的链接一旦点击就会变成白色(不可见)
- r - 尝试将其与 ggplot 一起使用时出现格式默认函数错误
- c# - 在应用程序崩溃的 xamarin 表单上创建自定义渲染处于中断模式
- python - 使用 pandas 尝试检索 categorical_subset 的列数据时出错
- excel - 当数据分布在多个列/范围(UNIQUE 函数)时,如何在 Excel 中获取唯一的值列表
- angular - Angular 和 Jasmine MAT_DIALOG_DATA "TypeError: ctx.currentRoles is undefined "
- python - MultipartEncoder - requests_toolbelt
- sql - 内部连接 postgresql - 我怎样才能使“id”在 2 个表中相同
- python - Django 搜索不适用于项目 1 需要代码
- excel - Sub Excel VBA的可选范围