我有以下路由规则:
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} 部分到 URL 的规则的唯一方法吗?
我有点困惑。谢谢你的帮助。