2012-01-24 98 views
5

我正在嘗試爲REST創建更高級的查詢機制。假設我有以下內容:REST中的高級查詢

GET /data/users 

並返回用戶列表。然後篩選返回的用戶例如我會說:

GET /data/users?age=30 

得到30歲的用戶列表。現在可以說,我想30歲的用戶 - 40.我想主要有一組可重用運營商,如:

GET /data/users?greaterThan(age)=30&lessThan(age)=40 

的GREATERTHAN和每種不超過將是對其他數字,日期可重複使用等領域。這也允許我添加其他運算符(包含,開始,結束等等)。我是REST noob,所以我不確定這是否違反了REST遵循的任何核心原則。有什麼想法嗎?

+0

MS Dynamics 2011平臺做類似的oData接口。 http://msdn.microsoft.com/en-us/library/gg309461.aspx也許這會給你一些信息。 – user1231231412

+0

感謝您的鏈接,這對於看到像Microsoft這樣的人是如何實現它非常有幫助。 – NorthFork

+0

感謝大家的反饋,這很有幫助。 – NorthFork

回答

1

或者,您可能會更好地使用可選參數「minAge」和「maxAge」。

方案2:對編碼參數值(S),以表明測試進行到:不平等,模式匹配等

這會混亂,無論你對複雜的布爾表達式做什麼。在某些時候,你幾乎想爲查詢描述本身製作文檔格式,但很難將其視爲「GET」。

1

我會考慮設置查詢參數的值,包括運營商和這樣的..這樣的一個範圍值

/data/users?age=[30,40] 

/data/users?age=>30&age=<40 

將使語法更容易閱讀,只要確保URL編碼,如果您使用任何保留字符