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

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

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'
content: 'My post'
...
...
}, ...]

这些部分基本没什么疑问。最大的质疑在于返回多少个record。
一开始我说增加一个url parameter叫endTime,返回所有postTime大于endTime的所有
数据,由前端记录上次request time作为这次的endTime。
面试官说不行,排序是按ranking的不是按时间。于是我改用pageNo和pageSize两个参
数来定义返回多少个record。面试官就质疑说你这样不会重复返回一些内容吗?我说重
复返回也无所谓,前端不重复render就行。但她还是不满意,我又补充说如果有不同的
device,你必须返回重复的内容,不然显示就不正确了。她还是不满意。于是我就说加
一个参数deviceID,同一个deviceID的话第二次request就不返回相同内容了。

实际上我自己对这样的回答也不是很满意。哪怕是ranking order,也不妨碍我增加一
个endTime参数吧?

最终的结果,这一轮可能是fail了。
--
※ 来源:·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.]

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

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

友情链接


 

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

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