亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

移動端接口的設計問題

移動端接口的設計問題

Helenr 2019-03-13 13:15:03
現有學生實體類 Studentpublic class Student {    private int no;    private String name;    private int score;}需要為移動端提供數據查看學生成績,數據源未使用數據庫僅使用Java集合,若Server的數據源為List<Student>,內容如下:0 張三 581 李四 422 王五 23假設移動端每次請求只顯示兩條數據,則首次顯示0 張三 581 李四 42移動端下拉頁面,請求下一頁數據,并將no=1發回給Server,此時移動端就多了一條數據,變為:0 張三 581 李四 422 王五 23 --下拉后得到的新數據若數據源固定不變這樣是沒有問題的,但實際情況是學生的信息會隨時變化,即可能在移動端下拉請求下一頁之前"1 李四 42"這條數據就沒有了,此時再將no=1發回給Server會產生各種各樣的問題,例如:同一條數據顯示兩次、有的未被顯示等問題,有什么方法在不使用數據庫的情況下按這種方式為移動端提供列表數據呢?想不通哇=。=
查看完整描述

5 回答

?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

樓上的難道沒做過移動端分頁嘛??移動端分頁涉及到有變化的數據肯定不是按page=1這種方式來的,不然要重復或漏掉,(漏掉還好,重復客戶端一下就發現了)
通用解決方案是這樣的:
首先你肯定有個排序唄,比如說按時間,按分數等,客戶端要下一頁只需要傳它當前頁的最后一條記錄的標識符就ok了,服務器拿到這個標識符再找后面的數據給它。
例子:
假設server端數據是1,2,3,4,5,6,7,8 返給client數據是1,2,3,這時需要3后面的數據,就把3傳回server,server拿到3再按照約定邏輯找到比3大的是4,5,6給client,這樣即使新增或刪除都不會有重復問題
以前我們做瀑布流圖片展示就是這樣的,另外FB,instagram的api很多都是這樣設計的

查看完整回答
反對 回復 2019-04-24
?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

no=1么有就找no=2


查看完整回答
反對 回復 2019-04-24
?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

你都不用數據庫,那數據怎么還會消失呢?
分頁可以嗎?按照你存的list.類似如下偽代碼:
`
List<x> list1 = list.subList(0,3);
List<x> list2 = list.subList(3,6);
List<x> list3 = list.subList(6,9);

查看完整回答
反對 回復 2019-04-24
?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

分頁列表中的數據被刪除的情況確實很麻煩...

可以考慮3種解決方法:

  1. 數據量小的話不要進行分頁了,直接一次性把列表中的數據全給客戶端

  2. 數據量大非要分頁的話,可以考慮每次不光傳遞要獲取的那一頁的數據,順便把前面已經獲取過了的頁面的數據的diff(變化情況)傳給客戶端

  3. 如果數據變化,傳給客戶端一個數據有變化了的標志,讓客戶端刷新整個列表或者提示用戶應該要刷新整個列表。


查看完整回答
反對 回復 2019-04-24
  • 5 回答
  • 0 關注
  • 499 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號