Пагинация в веб-приложении REST - PullRequest
321 голосов
/ 22 апреля 2009

Это более общая переформулировка этого вопроса (с исключением специфических частей Rails)

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

1. Использование только строк запроса

например. http://application/products?page=2&sort_by=date&sort_how=asc
Проблема в том, что я не могу использовать полное кэширование страниц, а также URL-адрес не очень чистый и его легко запомнить.

2. Использование страниц в качестве ресурсов и строк запросов для сортировки

например. http://application/products/page/2?sort_by=date&sort_how=asc
В этом случае проблема заключается в том, что http://application/products/pages/1 не является уникальным ресурсом, поскольку использование sort_by=price может дать совершенно другой результат и Я все еще не могу использовать кэширование страниц.

3. Использование страниц в качестве ресурсов и сегмента URL для сортировки

например. http://application/products/by-date/page/2
Я лично не вижу проблем в использовании этого метода, но кто-то предупредил меня, что это не очень хороший способ (он не назвал причину, поэтому, если вы знаете , почему , это не рекомендуется пожалуйста, дайте мне знать)

Любые предложения, мнения, критика приветствуются. Спасибо.

Ответы [ 12 ]

0 голосов
/ 14 июля 2014

Я использую в своих проектах следующие URL:

http://application/products?page=2&sort=+field1-field2

, что означает - «дай мне страницу вторую страницу, упорядоченную по возрастанию по полю1 и затем по убыванию по полю2». Или, если мне нужна еще большая гибкость, я использую:

http://application/products?skip=20&limit=20&sort=+field1-field2
0 голосов
/ 22 апреля 2009

Я использовал решение 3 раньше (я пишу много приложений для Django). И я не думаю, что с этим что-то не так. Он так же генерируемый, как и два других (в случае, если вам нужно сделать какой-то массовый сбор данных или тому подобное), и выглядит чище. Кроме того, ваши пользователи могут угадывать URL-адреса (если это общедоступное приложение), и людям нравится иметь возможность идти прямо туда, куда они хотят, и угадывание URL-адресов дает им возможность.

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