Соглашение по строке запроса URL для множественной сортировки - PullRequest
15 голосов
/ 23 февраля 2009

У меня есть веб-приложение RESTful, которое поддерживает несколько полей сортировки в коллекции элементов. Существует ли общее соглашение для кодирования этих полей сортировки в строке запроса URL-адреса? Я рассматриваю шаблон, подобный следующему:

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

Это позволит отсортировать коллекцию книг по автору, а затем по дате публикации.

По сути, мне нужен удобный способ, чтобы пары имя-значение в моей строке запроса имели свои собственные пары имя-значение. Мне нужно будет сделать что-то похожее на приведенный выше пример для параметров фильтра.

Есть ли в Rails или ASP.NET MVC шаблон для этого? Существуют ли другие механизмы, которые создали способы решения этой проблемы? Я бы лучше использовал знакомый формат, чем свернул свой собственный.

Я бы также предпочел формат, в котором используется как можно меньшее кодирование процента URL.

Ответы [ 4 ]

16 голосов
/ 15 апреля 2009

Я делал это до того, как использовал стандартный синтаксис SQL. Существует множество функций и методов синтаксического анализа.

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

, который будет закодирован в

http://myapp.com/books?sort=author+asc,datepublished+desc&count=12
13 голосов
/ 26 июля 2012

Для REST я предпочитаю более интуитивный синтаксис:

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

И более подробно (без знака «+»):

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

Легко запомнить ...

0 голосов
/ 16 апреля 2009

А как насчет полностью совместимой с 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 непосредственно там, где каждый элемент сортировки имеет свойство name и dir .

0 голосов
/ 15 апреля 2009

Я бы не использовал параметры типа GET. Как насчет этого:

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

Идея состоит в том, что если вам нужно уточнить поиск ресурса по критерию, вы добавляете его имя в URL, а затем значение параметра. Если вам нужно более одного значения параметра, разделите их знаком +.

Вот что StackOverflow использует для помеченных вопросов:

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

Я признаю, однако, что добавление count / 12 в конце выглядит немного странно, но я не могу придумать ничего лучшего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...