Pode haver duas abordagens, dependendo da lógica do servidor.
Abordagem 1: quando o servidor não é inteligente o suficiente para lidar com estados de objetos.
Você pode enviar todos os IDs exclusivos de registro em cache para o servidor, por exemplo ["id1", "id2", "id3", "id4", "id5", "id6", "id7", "id8", "id9", "id10"] e um parâmetro booleano para saber se você está solicitando novos registros (puxe para atualizar) ou registros antigos (carregue mais).
Seu servidor deve ser responsável por retornar novos registros (carregar mais registros ou novos registros por meio de puxar para atualizar), bem como IDs de registros excluídos de ["id1", "id2", "id3", "id4", "id5", " id6 "," id7 "," id8 "," id9 "," id10 "].
Exemplo: -
Se você está solicitando carregar mais, sua solicitação deve ser algo como isto: -
{
"isRefresh" : false,
"cached" : ["id1","id2","id3","id4","id5","id6","id7","id8","id9","id10"]
}
Agora, suponha que você esteja solicitando registros antigos (carregue mais) e suponha que o registro "id2" seja atualizado por alguém e os registros "id5" e "id8" sejam excluídos do servidor, e a resposta do servidor deverá ser algo como:
{
"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"]
}
Mas, neste caso, se você tiver muitos registros em cache locais, suponha 500, sua sequência de solicitação será muito longa assim: -
{
"isRefresh" : false,
"cached" : ["id1","id2","id3","id4","id5","id6","id7","id8","id9","id10",………,"id500"]//Too long request
}
Abordagem 2: Quando o servidor é inteligente o suficiente para lidar com os estados dos objetos de acordo com a data.
Você pode enviar o ID do primeiro registro e o último registro e o tempo da época da solicitação anterior. Dessa forma, sua solicitação é sempre pequena, mesmo se você tiver uma grande quantidade de registros em cache
Exemplo: -
Se você está solicitando carregar mais, sua solicitação deve ser algo como isto: -
{
"isRefresh" : false,
"firstId" : "id1",
"lastId" : "id10",
"last_request_time" : 1421748005
}
Seu servidor é responsável por retornar os IDs dos registros excluídos que são excluídos após o last_request_time, bem como retornar o registro atualizado após last_request_time entre "id1" e "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"]
}
Puxe para atualizar: -
Carregue mais