2009-02-23 17 views
11

我有一個RESTful web應用程序,它支持項目集合上的多個排序字段。將這些排序字段編碼到URL的查詢字符串中是否有一個通用約定?我正在考慮如下模式:多種排序的URL查詢字符串約定

http://myapp.com/books?sort=author:asc,datepublished:desc&count=12 

這將按作者排序集合書籍,然後按發佈日期排序。

基本上,我需要一個方便的方法來爲我的查詢字符串中的名稱/值對創建名稱/值對。我也需要爲上面的參數做類似於上面的例子。

Rails或ASP.NET MVC是否有這樣的模式?是否有其他框架已經建立了處理這個問題的方法?我寧願使用一種熟悉的格式,而不是推出自己的格式。

我還喜歡使用盡可能少的URL百分比編碼的格式。

+0

好問題 - 我自己也想知道同樣的事情。 – 2009-02-23 16:56:02

+0

看起來你正在製作JSON-ish格式;我會避免這種情況,因爲有人可能會解釋它 - 就像JSON一樣,在這種情況下,訂購的概念就會丟失。湯姆,好點, – 2009-02-23 16:58:53

+0

。這就是爲什麼我要求反饋! – dthrasher 2009-02-23 18:37:45

回答

9

我在使用標準SQL排序語法之前完成了這個操作。這裏有許多解析函數和技巧。

http://myapp.com/books?sort=author asc,datepublished desc&count=12 

這將被編碼到

http://myapp.com/books?sort=author+asc,datepublished+desc&count=12 
0

我會避免使用GET參數。這個怎麼樣:

http://myapp.com/books/sortedby/author:asc+datepublished:desc/count/12 

的想法是,如果你需要改進基於一個標準的資源搜索,添加它的名字上的URL,後跟參數值。如果您需要多個參數值,請使用+分隔它們。

這是StackOverflow上用來標記問題:然而

http://stackoverflow.com/questions/tagged/java+servlet 

我承認,加入數/ 12月末看起來有點怪,但我想不出更好的東西。

0

什麼完全PHP兼容的版本像這樣的:但

http://myapp.com/books?sort[0][name]=author&sort[0][dir]=asc&sort[1][name]=datepublished&sort[1][dir]=desc&count=12 

有點長很多方便易,正如我已經說過了,符合PHP。 ASP.NET也可能已經實現了對這種格式的支持。

這將建立一個數組,排序,直接其中排序的每個元素有一個名稱DIR屬性。

6

休息,我更喜歡一個更直觀的語法:

http://myapp.com/books?sort=+author,-datepublished&count=12

而更多的闡述(沒有 '+' 號):

http://myapp.com/books?sort=author,-datepublished&count=12

易記...

相關問題