ASP.NET Web APIで、オブジェクトを取得する深さを宣言するオプションのパラメーターを受け入れるように、デフォルトのGETアクションを変更しました。
public ObjectModel Get(int id, int? loadType = 1)
{
if (loadType.Value == 1)
{
return GetDeepObjectModel(id);
}
else
{
return GetShallowObjectModel(id);
}
}
デフォルトルートが与えられた場合:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: new { id = @"\d+" }
);
その中で有効なリクエストに問題があります:
https://www.mysite.com/api/objects/1234?loadType=1
は機能しますが、基本的なgetでも同じアクションを機能させたいと思います-loadTypeパラメータをオプションと見なします:
https://www.mysite.com/api/objects/1234
2番目のリクエストでは、404が見つかりません。オプションのパラメータと組み合わせた場合、IDは一致した変数としてカウントされないようです。
ここに欠けているものはありますか?MVCでの私の経験から、ルートの追加はすぐに手に負えなくなる可能性があることがわかっているので、この問題をカバーするために新しいルートの追加を開始することはほとんどありません。