Там может быть два подхода в зависимости от вашей логики на стороне сервера.
Подход 1. Когда сервер недостаточно умен для обработки состояний объекта.
Вы можете отправить все кэшированные записи уникальных идентификаторов на сервер, например ["id1", "id2", "id3", "id4", "id5", "id6", "id7", "id8", "id9", «id10»] и логический параметр, чтобы узнать, запрашиваете ли вы новые записи (pull для обновления) или старые записи (загрузить больше).
Ваш сервер должен отвечать за возвращение новых записей (загружать больше записей или новых записей с помощью функции pull для обновления), а также идентификаторов удаленных записей из ["id1", "id2", "id3", "id4", "id5", " ID6" , "ИД7", "ID8", "ID9", "ID10"].
Пример: -
Если вы запрашиваете нагрузку больше, ваш запрос должен выглядеть примерно так:
{
"isRefresh" : false,
"cached" : ["id1","id2","id3","id4","id5","id6","id7","id8","id9","id10"]
}
Теперь предположим, что вы запрашиваете старые записи (загрузите больше), и предположим, что запись «id2» кем-то обновлена, а записи «id5» и «id8» удалены с сервера, тогда ваш ответ сервера должен выглядеть примерно так: -
{
"records" : [
{"id" :"id2","more_key":"updated_value"},
{"id" :"id11","more_key":"more_value"},
{"id" :"id12","more_key":"more_value"},
{"id" :"id13","more_key":"more_value"},
{"id" :"id14","more_key":"more_value"},
{"id" :"id15","more_key":"more_value"},
{"id" :"id16","more_key":"more_value"},
{"id" :"id17","more_key":"more_value"},
{"id" :"id18","more_key":"more_value"},
{"id" :"id19","more_key":"more_value"},
{"id" :"id20","more_key":"more_value"}],
"deleted" : ["id5","id8"]
}
Но в этом случае, если у вас много локальных кэшированных записей, допустим 500, тогда строка вашего запроса будет слишком длинной, например:
{
"isRefresh" : false,
"cached" : ["id1","id2","id3","id4","id5","id6","id7","id8","id9","id10",………,"id500"]//Too long request
}
Подход 2: Когда сервер достаточно умен, чтобы обрабатывать состояния объекта в соответствии с датой.
Вы можете отправить идентификатор первой записи, последней записи и времени начала предыдущего запроса. Таким образом, ваш запрос всегда мал, даже если у вас большое количество кэшированных записей.
Пример: -
Если вы запрашиваете нагрузку больше, ваш запрос должен выглядеть примерно так:
{
"isRefresh" : false,
"firstId" : "id1",
"lastId" : "id10",
"last_request_time" : 1421748005
}
Ваш сервер отвечает за возвращение идентификаторов удаленных записей, которые были удалены после last_request_time, а также за возврат обновленной записи после last_request_time между "id1" и "id10".
{
"records" : [
{"id" :"id2","more_key":"updated_value"},
{"id" :"id11","more_key":"more_value"},
{"id" :"id12","more_key":"more_value"},
{"id" :"id13","more_key":"more_value"},
{"id" :"id14","more_key":"more_value"},
{"id" :"id15","more_key":"more_value"},
{"id" :"id16","more_key":"more_value"},
{"id" :"id17","more_key":"more_value"},
{"id" :"id18","more_key":"more_value"},
{"id" :"id19","more_key":"more_value"},
{"id" :"id20","more_key":"more_value"}],
"deleted" : ["id5","id8"]
}
Потяните, чтобы обновить: -
Загрузи больше