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
?