0
我有一个WebAPI控制器,它需要一个ODataOptions
参数。WebApi + OData:限制最大结果
我想确保用户不能一下子下载整个数据库。
所以,我确认了options
对象:
public IHttpActionResult Get(ODataQueryOptions<ViewModel> options)
{
var oDataValidationSettings = new ODataValidationSettings
{
MaxTop = 100
}
try
{
options.Validate(oDataValidationSettings);
}
catch (ODataException ex)
{
return BadRequest("OData query validation failed: " + ex.Message);
}
//return results
}
该呼叫的伟大工程一样
http://host/api/controller?$filter=...&$top=1000
这将返回预期的验证错误消息。
但它是十分容易,只需提出请求,以规避:
http://host/api/controller?
没有$top
,什么都没有。 这实际上返回整个表!
如果完全没有指定$top
参数,则不会触发验证程序。
从oData选项构造查询时,我可以附加.Take(100)
,但它似乎很难。
有没有更好的方法来处理丢失的$top
?