[英]GET by Id With Optional Parameters
在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未找到。 将该ID与可选参数配对时,似乎没有将其计为匹配变量。
我在这里缺少什么吗? 因为我在MVC方面的经验告诉我,添加路由可以很快地失控,所以我非常不会开始添加新路由来解决此问题。
我不能完全确定这一点,但似乎我的默认值
int? loadType = 1
参数导致了问题。 如果我将默认值更改为null
int? loadType = null
并检查设置默认值的操作
if (!loadType.HasValue)
{
loadType = 1;
}
请求的两个版本都正确地定向到了预期的操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.