当前在线人数7942
首页 - 分类讨论区 - 海外生活 - 待字闺中版 - 同主题阅读文章
未名交友
[更多]
[更多]
NewsFeed API 设计该如何回答?
[版面:待字闺中][首篇作者:ravichouhan] , 2017年06月18日23:22:47 ,1588次阅读,13次回复
来APP回复,赚取更多伪币 关注本站公众号:
[分页:1 ]
ravichouhan
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 1 ]

发信人: ravichouhan (ravi!), 信区: JobHunting
标  题: NewsFeed API 设计该如何回答?
发信站: BBS 未名空间站 (Sun Jun 18 23:22:47 2017, 美东)

往上拉就得最新的newsfeed,往下拉就得旧的。但这些内容不是按时间排序,是按
ranking排序。


--
※ 修改:·ravichouhan 於 Jun 29 02:35:33 2017 修改本文·[FROM: 2601:0646:c402:d]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2601:0646:c402:]

 
Purewater
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 2 ]

发信人: Purewater (青蛙), 信区: JobHunting
标  题: Re: NewsFeed API 设计该如何回答?
发信站: BBS 未名空间站 (Mon Jun 19 01:22:12 2017, 美东)

这个可以看一下twitter API developer's guide.  处理pagination.

--
☆ 发自 iPhone 买买提 1.23.01
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 24.]

 
say543
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 3 ]

发信人: say543 (Morris), 信区: JobHunting
标  题: Re: NewsFeed API 设计该如何回答?
发信站: BBS 未名空间站 (Mon Jun 19 01:53:57 2017, 美东)


楼主有些不懂 重复是因为如果user 刷新了页面两次 所以requst 两次? 另外 "如果有
不同的
device,你必须返回重复的内容" 这个iiea 是为什么 ? 如果要frondend 去重 能不能
用304 的status 确认缓存?

【 在 ravichouhan (ravi!) 的大作中提到: 】
: onsite了脸家,NewsFeed API 设计,纯粹是API,
: 要设计api的signiture,满足前端使用要求。往上拉就得最新的newsfeed,往下拉就得
: 旧的。但这些内容不是按时间排序,是按ranking排序。
: 由于没有遇到过这样的问题,我只能按照我理解的Restful标准去回答。大概如下:
: URL: www.fb.com/user/{userId}/NewsFeed
: Method: GET
: Return: [{
: id: 123,
: ownerId: 456,
: postTime: '2015-10-10T09:22:21'
: ...................



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 66.]

 
terrific
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 4 ]

发信人: terrific (terrific), 信区: JobHunting
标  题: Re: NewsFeed API 设计该如何回答?
发信站: BBS 未名空间站 (Mon Jun 19 10:16:25 2017, 美东)

Thanks!
I just found this post https://dev.twitter.com/rest/public/timelines,
explained how to handle the pagination issue with new feed coming in real
time: add a max_id parameter to track the lowest id received.

In another case, to receive the latest feed without duplication, add a since
_id parameter to track the highest id received.

Hope it helps!
【 在 Purewater (青蛙) 的大作中提到: 】
: 这个可以看一下twitter API developer's guide.  处理pagination.



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 165.]

 
mitbbsthanks
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 5 ]

发信人: mitbbsthanks (ThanksMitBBS), 信区: JobHunting
标  题: Re: NewsFeed API 设计该如何回答?
发信站: BBS 未名空间站 (Mon Jun 19 12:49:10 2017, 美东)

Feed id 全局单调增?!

--
☆ 发自 iPhone 买买提 1.23.01
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2600:0001:9a02:]

 
stealop
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 6 ]

发信人: stealop (stealop), 信区: JobHunting
标  题: Re: NewsFeed API 设计该如何回答?
发信站: BBS 未名空间站 (Mon Jun 19 14:15:32 2017, 美东)

Twitter 这个 timeline是 按 时间 排序的。也就是说新来的 post 是在 timeline的
最前面。 但是 这个题目的要求是 timeline按照 ranking 排序的。 那么新来的
post 可能因为他们的 ranking score 被放在 timeline的 任意位置, 如果这样的话
, 怎么用 cursor?
【 在 terrific (terrific) 的大作中提到: 】
: Thanks!
: I just found this post https://dev.twitter.com/rest/public/timelines,
: explained how to handle the pagination issue with new feed coming in real
: time: add a max_id parameter to track the lowest id received.
: In another case, to receive the latest feed without duplication, add a
since
: _id parameter to track the highest id received.
: Hope it helps!



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 184.]

 
terrific
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 7 ]

发信人: terrific (terrific), 信区: JobHunting
标  题: Re: NewsFeed API 设计该如何回答?
发信站: BBS 未名空间站 (Mon Jun 19 15:05:46 2017, 美东)

如果不是按照timeline而是按照ranking,这样新的旧的混在一起,pagination没有意
义。

一个笨办法是把目前所有的feed id放在一个参数里面, 让server处理,保证返回没有
重复的
比如: https://www.fb.com/newsfeed?id:not-in=[1,2,3,5]


BTW:facebook 的graph api 用的参数是since, until:https://developers.
facebook.com/blog/post/478/

【 在 stealop (stealop) 的大作中提到: 】
: Twitter 这个 timeline是 按 时间 排序的。也就是说新来的 post 是在 timeline

: 最前面。 但是 这个题目的要求是 timeline按照 ranking 排序的。 那么新来的
: post 可能因为他们的 ranking score 被放在 timeline的 任意位置, 如果这样的话
: , 怎么用 cursor?
: since




--
※ 修改:·terrific 於 Jun 19 15:18:28 2017 修改本文·[FROM: 165.]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 165.]

 
GPRO
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 8 ]

发信人: GPRO (GoPro), 信区: JobHunting
标  题: Re: NewsFeed API 设计该如何回答?
发信站: BBS 未名空间站 (Tue Jun 20 00:37:59 2017, 美东)

我觉得还是能用cursor

cursor之前的timeline都被query过了,

cursor之后的timeline,全部fetch,然后按照rank 排序,返回rank高的几个并且在DB
里面mark成visited。。如果cursor恰好被mark了,就把cursor移动到下一个。



不过这样的问题在于,如果我是分布式的,我要把好几个replica都mark成visited,可
能会比较慢。

【 在 stealop (stealop) 的大作中提到: 】
: Twitter 这个 timeline是 按 时间 排序的。也就是说新来的 post 是在 timeline

: 最前面。 但是 这个题目的要求是 timeline按照 ranking 排序的。 那么新来的
: post 可能因为他们的 ranking score 被放在 timeline的 任意位置, 如果这样的话
: , 怎么用 cursor?
: since



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2601:0646:c402:]

 
mknoodle
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 9 ]

发信人: mknoodle (mknoodle), 信区: JobHunting
标  题: Re: NewsFeed API 设计该如何回答?
发信站: BBS 未名空间站 (Tue Jun 20 02:25:20 2017, 美东)

题目的意思是你取第一页之后,取第二页之前,有一些新的feed产生,因为是按照rank
排序,所以新的feed可能会夹杂在第一页的数据之间。所以取第二页时应该考虑怎样才
能不取到重复数据,即第一页的若干数据。
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 73.]

 
peking2
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 10 ]

发信人: peking2 (Lambda), 信区: JobHunting
标  题: Re: NewsFeed API 设计该如何回答?
发信站: BBS 未名空间站 (Tue Jun 20 02:36:16 2017, 美东)


【 在 ravichouhan (ravi!) 的大作中提到: 】
: onsite了脸家,NewsFeed API 设计,纯粹是API,
: 要设计api的signiture,满足前端使用要求。往上拉就得最新的newsfeed,往下拉就得
: 旧的。但这些内容不是按时间排序,是按ranking排序。
: 由于没有遇到过这样的问题,我只能按照我理解的Restful标准去回答。大概如下:
: URL: www.fb.com/user/{userId}/NewsFeed
: Method: GET
: Return: [{
: id: 123,
: ownerId: 456,
: postTime: '2015-10-10T09:22:21'
: ...................


往上拉就得最新的newsfeed,往下拉就得旧的。
但这些内容不是按时间排序,是按ranking排序。

感觉这两句话是矛盾的呀。
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 50.]

 
mknoodle
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 11 ]

发信人: mknoodle (mknoodle), 信区: JobHunting
标  题: Re: NewsFeed API 设计该如何回答?
发信站: BBS 未名空间站 (Tue Jun 20 15:15:45 2017, 美东)

简单来说就是实现按ranking排序,在某用户某一次浏览过程中做到一页一页取,不返
回重复数据。按ranking和按时间排序,最大的不同是前者会将新的feed排到旧的feed
之间。
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 204.]

 
ilvch
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 12 ]

发信人: ilvch (断肠人在天涯), 信区: JobHunting
标  题: Re: NewsFeed API 设计该如何回答?
发信站: BBS 未名空间站 (Wed Jun 21 18:27:32 2017, 美东)

同感
一般需要当场和面官澄清定义

【 在 peking2 (Lambda) 的大作中提到: 】
: 往上拉就得最新的newsfeed,往下拉就得旧的。
: 但这些内容不是按时间排序,是按ranking排序。
: 感觉这两句话是矛盾的呀。



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2620:0000:1000:]

 
dryden
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 13 ]

发信人: dryden (拽的狠-仁义礼智信), 信区: JobHunting
标  题: Re: NewsFeed API 设计该如何回答?
发信站: BBS 未名空间站 (Thu Jun 22 19:38:29 2017, 美东)

try circular buffer.
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 192.]

 
xiangcaohell
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 14 ]

发信人: xiangcaohell (vanilla), 信区: JobHunting
标  题: Re: NewsFeed API 设计该如何回答?
发信站: BBS 未名空间站 (Sun Jun 25 15:43:28 2017, 美东)

感觉仍然可以用created_time解决啊。前端记录上一次request的time,
然后下一页的时候先filter(created_time <= time) ,这样就排除了新增加的数据。
然后再pagination, 根据ranking排序取第2页。这里需要提供created_after, page_
num
, limit 3个参数。和twitter api的做法有一点不样。


--
※ 修改:·xiangcaohell 於 Jun 26 13:28:36 2017 修改本文·[FROM: 2620:0119:5001:3]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 73.]

[分页:1 ]
[快速返回] [ 进入待字闺中讨论区] [返回顶部]
回复文章
标题:
内 容:

未名交友
将您的链接放在这儿

友情链接


 

Site Map - Contact Us - Terms and Conditions - Privacy Policy

版权所有,未名空间(mitbbs.com),since 1996