在 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
对于第二个请求,我得到一个 404 not found。当 id 与可选参数配对时,它似乎没有被计为匹配变量。
我在这里缺少什么吗?我非常不想开始添加新路由来解决这个问题,因为我使用 MVC 的经验告诉我,添加路由很快就会失控。