22

我有一个支持项目集合上的多个排序字段的 RESTful Web 应用程序。将这些排序字段编码到 URL 的查询字符串中是否有通用约定?我正在考虑如下模式:

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

这将按作者然后按出版日期对书籍集进行排序。

基本上,我需要一种方便的方法让我的查询字符串中的名称-值对拥有自己的名称-值对。我也需要对过滤器参数执行与上述示例类似的操作。

Rails 或 ASP.NET MVC 是否有这种模式?是否有其他框架已经建立了处理这个问题的方法?我宁愿使用熟悉的格式,也不愿自己动手。

我也更喜欢使用尽可能少的 URL 百分比编码的格式。

4

3 回答 3

23

在使用标准 SQL 排序语法之前,我已经这样做了。有许多解析函数和技术。

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

这将被编码为

http://myapp.com/books?sort=author+asc,datepublished+desc&count=12
于 2009-04-15T14:59:09.540 回答
17

对于 REST,我更喜欢更直观的语法:

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

更详细(没有“+”号):

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

容易记住...

于 2012-07-26T17:03:59.200 回答
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 也可能已经实现了对这种格式的支持。

这将直接创建一个数组sort,其中 sort 的每个元素都有一个namedir属性。

于 2009-04-16T10:55:36.567 回答