次のルーティング ルールがあります。
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} 部分が存在する必要がないことを意味すると考えました。しかし、それは起こっていないようです。URL に {id} 部分がない別のルールを作成する唯一の方法はありますか?
少し混乱しています。助けてくれてありがとう。