我目前正在修改我們公司多年來一直使用的舊API。我有一個特定端點調用GetBookings接受的參數的巨量:如何在ASP.net Core中效率過濾RestApi的結果集
public HttpResponseMessage GetBookings(string contactId, string timeFilter = "upcoming", string bookedBy = null, string resourceTypeIds = null, string clientId = null (...), int pageSize = 25, int pageIndex = 0)
{
(...)
}
添加所有這些參數並不感到自然和我一直在尋找這樣做那種事情的另一種方式。
1 /我研究了OData,它似乎提供了一些高級過濾/分頁選項。
看來OData的Microsoft版本是不是最新的(或不維護?)
2 /我還可以再補充下預訂稱爲搜索端點(HttpPost),並接受JSON過濾器。
這種方法不是很安靜,會導致一些緩存問題(因爲HttpPost請求沒有被緩存)。
3 /我也可以添加一個名爲query的參數給我的get bookings端點。該查詢將包含我的過濾器,如'StartDate> = ... AND ....'。
這種方法看起來很複雜,因爲我需要實際解析查詢以轉換爲lambda表達式。我也可以使用短小精悍,但它會很容易受到SQL注入的影響。
4 /我發現的最後一個選項是實際創建接受必要參數的端點。
這很容易實現,但有點醜陋?!
如何在ASP.NET內核WebApi中實現過濾/分頁?
謝謝 勒布
我試過了,它工作正常。不需要使用屬性[FromUri]。 – Seb