因此,我使用Laravel 4 PHP Framework構建了一個RESTful(儘可能RESTful)API。現在我有幾十個API調用工作,我有一個過程來做限制,排序和做簡單的過濾。這裏將是一個調用的一個例子:提供複雜過濾REST API
/api/v1/users?limit=10&offset=10&firstName=John&order[]=createdTimestamp desc
這將通過具有由createdTimestamp降序排序約翰的名字20用戶返回的第11位。這裏的簡單過濾只能完全匹配(=)。現在我也希望能夠通過REST API提供一個更復雜的過濾系統,該系統支持指定相等匹配類型的能力,以便他們可以執行!=或>或LIKE等等。問題是我不知道我是否能夠通過普通查詢字符串提供這種類型的過濾。
通過REST API提供這種複雜過濾的最佳方式是什麼?即使它不是「真正的」RESTful(即使這樣可以防止用戶嘗試運行超過某些瀏覽器所具有的URI字符長度限制的長查詢的問題),通過POST仍然認爲它是最好的方式嗎?
通過POST運行復雜的過濾器比較麻煩,但比使用其他方法(比如設置自定義標頭)更容易出錯。我建議不要將篩選語言與您的實際DB查詢語言過於緊密地匹配,因爲這會導致更多的複雜性和更大的安全漏洞機會。 – Perception 2013-02-21 00:08:34
我在這裏討論這個主題:http://stackoverflow.com/questions/1296421/rest-complex-applications/1297275#1297275 – 2013-02-21 00:11:25