Согласование строки запроса URL для нескольких сортировок - программирование

Согласование строки запроса URL для нескольких сортировок

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

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

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

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

Ответ 3

Я бы не использовал GET-параметры. Что об этом:

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

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

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

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

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

Ответ 4

Что касается полностью совместимой с 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.