Залежно від логіки вашого сервера може бути два підходи.
Підхід 1: Коли сервер недостатньо розумний для обробки станів об'єктів.
Ви можете надіслати всі кешовані записи унікальних ідентифікаторів на сервер, наприклад ["id1", "id2", "id3", "id4", "id5", "id6", "id7", "id8", "id9", "id10"] і булевий параметр, щоб знати, чи запитуєте ви нові записи (потягніть для оновлення) або старі записи (завантажте більше).
Ваш сервер повинен відповідати за повернення нових записів (завантажувати більше записів або нових записів за допомогою "pull to refresh"), а також ідентифікаторів видалених записів з ["id1", "id2", "id3", "id4", "id5", " id6 "," id7 "," 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"]
}
Потягніть, щоб оновити: -
Завантажити ще