【发布时间】:2017-11-09 17:48:06
【问题描述】:
在 asp.net core 中使用路由注释我可以很容易地做到以下几点
[HttpGet("ByID/{id}")]
public int GetByID(int id)
{
return 5;
}
[HttpGet("ByName/{id}")]
public string GetByName(string name)
{
return "neil";
}
但是,使用控制器中的相同方法,您如何使用 WebApiConfig 文件(即 .net 框架)中的非注释方式来执行此操作,即我在下面添加什么以使其适用于上述示例.
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
作为奖励,有人可以告诉我如何将相同的 URL 映射到仅按类型区分的两个 GET 项,例如
[HttpGet("{id}")]
[HttpGet("{name}")]
其中一个是整数,一个是字符串 - 换句话说,与上述相同,但不必指定两个单独的 url 段(ByID,ByName)?
【问题讨论】:
-
我想出了第一部分,即进行多次 MapHttpRoute 调用并使用操作设置名称。不知道这是不是最好的方法:默认值:new { id = RouteParameter.Optional, action = "GetByName" } 所以唯一的事情,假设这是正确的,你如何拥有相同的 url 只是按类型区分。
-
你需要的是路由约束
标签: c# asp.net-web-api asp.net-web-api2 asp.net-web-api-routing