【发布时间】:2013-10-03 07:24:24
【问题描述】:
我有以下路由规则:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: new { id = @"\d+"}
);
还有一个具有这些操作的 ProductController:
public Product Get(int id)
{
return _svc.GetProduct(id);
}
public int Post(Product p)
{
return 0;
}
我可以按预期调用Get 操作:GET "api/product/2"
我认为我可以像这样调用我的 Post 操作:POST "api/product"
但它不起作用。我收到 404 错误。如果我这样做,它会起作用:POST "api/product/2"
我认为通过将 id RouteParameter.Optional 设为默认值,这意味着不需要存在 url 的 {id} 部分来匹配路由规则。但这似乎没有发生。是唯一的方法来制定另一个没有 {id} 部分的规则吗?
我有点困惑。感谢您的帮助。
【问题讨论】:
标签: asp.net-mvc asp.net-web-api