2012-10-03 3 views
1

У меня вопрос о получении «случайных» фрагментов доступного контента из службы RESTful, без дублирования того, что клиент уже кэшировал. Как я могу сделать это с помощью RESTful?Как вы можете получить сложное подмножество записей?

Я обслуживаю очень большое количество предметов (небольшие статьи с текстом и URL-адресами). Давайте сделаем вид, что это: /api/article/

Мои (программное обеспечение) клиенты хотят получить случайные куски того, что доступно. Их слишком много, чтобы загрузить их на клиента. У них нет естественного порядка, так что это не та ситуация, когда они могут просто попросить последних. Вместо этого существует около 6-10 атрибутов, которые клиент может дать «подсказкам», какие типы статей они хотели бы видеть (например, популярные, последние, тренды ...).

С течением времени клиенты получают все больше и больше контента, но на сервере я понятия не имею, что у них уже есть, и потому, что они отправлены случайным образом, я не могу просто передать «последнее», которое у них есть ,

Я мог бы, возможно, выслать GUID того, что хранится локально. Клиенты хранят только 50-100 мест. Это достаточно мало для заполнения переменной POST, но не в строке запроса GET.

Что такое чистый способ его разработки?

Ключевые моменты:

  • данных не имеет никакого логического порядка
  • Клиенты должны кэшировать содержимое локально
  • Каждый элемент имеет GUID
  • Хотите, чтобы избежать сноса дублирует

ответ

2

Вы никогда не сможете сделать эту работу удовлетворительно, если данные действительно хранятся в произвольном порядке (помните, что Dilbert RNG Effect); вам нужно исправить заказ для конкретного клиента, чтобы он мог правильно его прорисовать. Это легко сделать, хотя; просто сделайте, чтобы этот заказ был самим ресурсом; в этот момент у вас есть естественный (если возможно, синтетический) порядок и может использовать обычные методы подкачки.

Главное, что нужно следить за тем, что вы создадите ресурс в ответ на GET, когда вы выполните первоначальный запрос: вы, вероятно, должны использовать имя ресурса, являющееся хешем параметров запроса (включая личность клиента, если это имеет значение), так что, если кто-то делает один и тот же запрос дважды в строке, они получат тот же ресурс (таким образом, сохраняя надлежащую идемпотентность). Вы всегда можете удалить ресурс после некоторого времени ожидания, а не требовать ручного удаления ...

Смежные вопросы