我正在尝试设置我的Web应用程序,以便能够接受以下内容
/api/product/1,其中1是ID,类似于/api/product/偏牙列
后者,我不能点击我的get (字符串别名)方法。(int )和GetProducts()工作得很好。
路线
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "AliasSelector",
routeTemplate: "api/{controller}/{alias}"
);控制器
[AcceptVerbs("GET")]
public IProduct Get(int id)
{
return new Product(id);
}
[AcceptVerbs("GET")]
public IProduct Get(string alias)
{
return new Product(alias);
}
[AcceptVerbs("GET")]
[ActionName("Products")]
public IEnumerable<IProduct> GetProducts()
{
return new Products().ToList();
}发布于 2014-11-12 10:47:41
假设您的id总是一个整数,而别名总是一个字符串,那么您可以尝试添加如下的路由约束:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: new { id = @"\d*" }
);
config.Routes.MapHttpRoute(
name: "AliasSelector",
routeTemplate: "api/{controller}/{alias}",
constraints: new { alias= @"[a-zA-Z]+" }
);https://stackoverflow.com/questions/26854832
复制相似问题