三種都有用…
offset based 大概就是數量很確定的 table 才能使用。例如終端用戶產生的內容幾乎都不行,因為隨著時間 table 會長大到不可預知。反之則可以。
cursor based 這名字取的不好,hacker news 建議用 token based pagination
token based 就是麻煩在多一個 codec ,實務上我盡量避開,像是 kaif 這個小站1 只用了 keyset based pagination
然後 keyset based 這個分類其實算 token based 的子類。你在設計 rest api 時,就算你的實作是 keyset ,你給別人的 api 也要用 start=
、end=
等變數名稱,而不是 since_id
、since_updated_at
這種會 leak abstraction 的名字 (你難保哪一天你不會修改排序)