有关 Restful API 的疑问

2015-09-03 08:39:33 +08:00
 bdbai
比如说有个获取帖子的 API ,应不应该把发布者的用户名、头像地址一起传回?还是只留个用户 ID 即可?
4835 次点击
所在节点    程序员
33 条回复
ljbha007
2015-09-03 08:50:56 +08:00
一般要一起回传 节约流量
zyx89513
2015-09-03 08:58:03 +08:00
尽量在一次请求完成, 多次请求网络延时比较大
minbaby
2015-09-03 09:18:18 +08:00
一般来讲,从逻辑上区分而不是从节省流量和时间上区分,逻辑上讲这些是有直接关联的所以更适合放在一起,如果处于其他考虑分开也是可以接受的
gevin
2015-09-03 09:21:12 +08:00
同意楼上,逻辑合理是第一位的
bdbai
2015-09-03 09:24:04 +08:00
@ljbha007 为什么一起回传会节约?如果用户信息会缓存呢?
@minbaby @zyx89513 那么就一起传回咯
ljbha007
2015-09-03 09:29:01 +08:00
@bdbai
HTTP 请求头有开销呀
还有多次请求对服务器的压力也会更大一些 同时加载速度也会有影响
loading
2015-09-03 09:41:48 +08:00
如果不一次传回,你下一步不就要获取这些信息了?
回帖必然要带用户信息吧,不然你后续如何区分?所以就一起回传了。


你应该不会是指用户的头像数据吧?你要压成 base64 传?传个地址就行,这样浏览器才能使用缓存!
learnshare
2015-09-03 09:42:26 +08:00
客户端用的话,一般要一次传回相关数据,否则让客户端多次查询,是很慢的。
loading
2015-09-03 09:43:54 +08:00
如果你直流 id 号,你可以试下在这个 api ,每个 id 请求一次,顺便也能做个压力测试了…看你服务器能不能挡住,每个帖子 10 个回复,也就 10 个请求而已…
bdbai
2015-09-03 10:45:49 +08:00
@ljbha007 其实加载倒问题不大 各种动画能糊弄一下
@loading 主要是考虑到客户端缓存可以灵活一点 头像当然是地址咯
@loading 我不会说我用 SAE 的
iyangyuan
2015-09-03 11:55:25 +08:00
这得看具体需求,如果盲目一次传回,不仅会造成业务逻辑上的耦合,而且造成资源浪费,又违反按需加载的思想。但如果有接下来必须用到的关联数据,那就没必要分多次请求了。
loading
2015-09-03 11:58:31 +08:00
如果你是全端,那你还不合格才会问这个问题!
如果你是后端,问下你前端人员的意见!
qiayue
2015-09-03 12:11:46 +08:00
需要什么就传回什么,比如帖子里需要显示发帖者的昵称头像,那么就只返回用户的这两个数据,用户的其他数据就没必要返回了
jeansfish
2015-09-03 12:14:57 +08:00
缓存就让客户端去判断, api 给出来就行了
bdbai
2015-09-03 12:56:29 +08:00
@iyangyuan @qiayue @jeansfish 明白了
@loading 虽然只是后端,不过经验严重缺乏。还请多指教。
msg7086
2015-09-04 04:27:16 +08:00
@loading 每个 ID 请求一次?这是什么新鲜的逻辑?是不是 SQL 也只能一次请求和返回一条数据了?

@bdbai 具体怎么做要看具体情况的。
比如说你前端程序是不是 SPA ,如果是的话, SPA 内部可以缓存数据,每次只要返回差值即可。
多次请求也就现在开销大点,然而现在的 SPDY 和以后的 HTTP/2 都会压缩报头和流复用,多个请求回复和单个合并的请求回复并不会有想象当中的那么大。

另外,像你这个返回帖子数据的 API ,根本不用等用户数据下载完就可以显示帖子了。等用户数据下载完了再把更新后的数据写入页面即可。

不过呢,如果你在创业公司的话,还是怎么简单怎么来,只要后端做好模块化,易于拆分的话,就算是合并输出也无所谓。毕竟初期快速迭代出产品比什么都重要。
loading
2015-09-04 06:27:11 +08:00
@msg7086 希望你看清楚一点,我是说一个不合理的 api 设置造成的问题。
bdbai
2015-09-04 08:31:13 +08:00
@msg7086 loading 说的是单独请求用户信息对服务器的压力...
确实是 SPA ,还有手机 app 。因为是在 SAE 上的,所以 SPDY 和 HTTP/2 可能比较麻烦。等以后移植了再说。
多谢指点。
msg7086
2015-09-04 08:47:39 +08:00
@loading 看了半天没看明白你什么意思。
1 个帖子 10 个回复, 10 个 id 拿用户数据也就 1 个请求就足够了,为何要去测什么 10 个请求。
bdbai
2015-09-04 10:31:22 +08:00
@msg7086 你说的是"批量获取用户信息"?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/218011

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX